作りたいもの
現在Realmを用いて単語アプリを作っています
以下のコードを用いて初回起動時にcsvファイルをRealmに取り込み、それを用いて単語テストアプリを作りました。
考えたこと
今回、一つの単語帳だけでなく、複数の単語帳から選んで登録できるアプリを作りたいと思い、自分なりに考えた結果として
1、複数のcsvファイルを用意しておく
2、初回起動時に登録する単語帳を選択させる
3、2の結果によって以下の部分を条件分岐させてRealmに登録する
guard let path = Bundle.main.path(forResource: "dataList", ofType: "csv") else { print("noCSV") return }
というような方向性で考えているのですが、仮に2000後程度の単語帳を3冊ほど登録できるようにすると、果たしてRealmがデータを保管できるのか。またアプリの起動や動作が極端に遅くなってしまうのではないかと不安です。
質問したいことのまとめ
1、上記の機能を持たせたい場合、現在の方向性は正しいのか(「複数の単語帳から選ぶ」という点については、アプリ「ターゲットの友」をみていただけるとわかりやすいと思います)
2、正しい場合、Realmの要領は問題ないのか(単語量は1冊につき2000後程度、単語と和訳のみ。また音声データをつけた場合も教えていただけると助かります)
3、正しくない場合、どのような方向性で実装していけばいいのか
4、最高でどれくらいの量をRealmに保存できるのか、また現在の使用量を確認する方法はないか
わからない部分が多く、曖昧な部分があって申し訳ないのですがよろしくお願いします
説明不足な部分についてはご質問ください
swift
1 if dataListArray.count == 0 { 2 var csvLines = [String]() 3 guard let path = Bundle.main.path(forResource: "dataList", ofType: "csv") else { 4 print("noCSV") 5 return 6 } 7 8 do { 9 let csvString = try String(contentsOfFile: path, encoding: String.Encoding.utf8) 10 csvLines = csvString.components(separatedBy: .newlines) 11 csvLines.removeLast() 12 } catch let error as NSError { 13 print("エラー:(error)") 14 return 15 } 16 17 18 // Realmへデータを入れる 今回は1737単語 idの最大値は1736 19 for wordData in csvLines { 20 21 let wordDetail = wordData.components(separatedBy: ",") 22 let wordList = RealmDataList() 23 let allWordList = realm.objects(RealmDataList.self) 24 if allWordList.count != 0 { 25 wordList.id = allWordList.max(ofProperty: "id")! + 1 26 } 27 realmDataList = wordList 28 29 try! realm.write { 30 self.realmDataList.English = wordDetail[1] 31 self.realmDataList.Japanese = wordDetail[2] 32 self.realm.add(self.realmDataList, update: .modified) 33 34 } 35 } 36 37 } 38
回答1件
あなたの回答
tips
プレビュー