質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2781閲覧

Realmのデータ容量はどれくらいなのでしょうか 複数のデータを登録するアプリ

tsuji71

総合スコア17

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

2クリップ

投稿2020/06/15 06:03

作りたいもの

現在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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thyda.eiqau

2020/06/15 10:56

「2000後程度の単語帳を3冊ほど登録」してみたらわかると思いますが、試せない事情があるのでしょうか?
tsuji71

2020/06/15 11:44

説明不足ですみません 「2000後程度の単語帳を3冊ほど登録」はあくまでも仮の話であり、今後増加していく予定です そのためRealmにどれほどの量のデータが保存できるのかという質問です
guest

回答1

0

ベストアンサー

最初からRealmに登録されているデータの容量について

iOSアプリそのものの容量に制限 (4GB) がありますので、実際にデータを突っ込んでみて、この制限を超えないように調整するのがよいと思います。
Maximum build file sizes - App Store Connect Help

  • (ないと思いますが) Realmをバンドルに入れてリリースする場合はRealmにデータを突っ込んでRealmファイルが制限を超えないかどうかをチェック
  • バンドルはcsvで、Realmファイルは起動時にDocumentsとかに生成する場合はcsvにデータを突っ込んでcsvファイルが制限を超えないかどうかをチェック

膨大なデータを最初から登録した状態にしたい場合は、初回登録データはオンラインからダウンロードさせる(ゲームアプリの初回ダウンロード処理のようなイメージ)のがよいと思います。

アプリ同梱ではなく、起動後の処理またはユーザーが自分で登録するデータの容量について

制限を設けているようなドキュメントは見つけられませんでした。おそらく単語帳のRealmファイルよりも膨大な量・サイズのアセットを扱っているであろうゲームアプリの類が普通に世に出回っていることを考えると、そこまで気にすることでもないような気がします。

投稿2020/06/16 01:14

thyda.eiqau

総合スコア2982

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsuji71

2020/06/17 07:12

なるほど、有難うございます アプリの容量自体はまだたいしたことがなさそうだったのでその方向でいこうと思います 丁寧なご説明有難うございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問