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

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

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

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

Swift

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

Q&A

0回答

466閲覧

RealmSwiftの2段階データベースの作成

AGATOMOHIRO

総合スコア0

Realm

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

Swift

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

0グッド

1クリップ

投稿2020/09/01 05:19

前提・実現したいこと

RealmSwiftで2段階の階層でデータベースを作りたのですがうまく作動しませんでした。
1段階の実装はできているのですが紐付けして2段回目を作成するにはどうすればいいのでしょうか。

発生している問題・エラーメッセージ

class AppDelegate: Thread 1: Exception: "Index 0 is out of bounds (must be less than 0)."

該当のソースコード

swift

1 2import UIKit 3import RealmSwift 4 5class Group: Object { 6 @objc dynamic var id = 0 7 @objc dynamic var name = "" 8 @objc dynamic var birthday = "" 9 let musicAlbum = List<MusicAlbum>() 10} 11 12class MusicAlbum: Object { 13 @objc dynamic var id = 0 14 @objc dynamic var category = 0 15 @objc dynamic var name = "" 16 @objc dynamic var releaseDay = "" 17 let music = List<Music>() 18} 19 20class Music: Object{ 21 @objc dynamic var id = 0 22 @objc dynamic var name = "" 23 @objc dynamic var lyric = "" 24} 25 26extension ViewController{ 27 28 let music1 = Music() 29 music1.id = 1 30 music1.name = "Music1" 31 music1.lyric = "" 32 33 let music2 = Music() 34 music2.id = 2 35 music2.name = "Music2" 36 music2.lyric = "" 37 38 let single1 = List<Music>() 39 single1.append(music1) 40 single1.append(music2) 41 42 let Single1 = MusicAlbum() 43 Single1.id = 1 44 Single1.name = "1stSingle" 45 Single1.releaseDay = "" 46 Single1.music.append(objectsIn: single1) 47 48 let Albums = List<MusicAlbum>() 49 Albums.append(Single1) 50      print(Albums) 51 52 let Group1 = Group() 53 Group1.id = 1 54 Group1.name = "Group1" 55 Group1.musicAlbum.append(objectsIn: Albums) 56} 57

試したこと

構造には問題がないと判断したのでprint(Albums)で確認をしたところ正常に記録されていました。おそらくRealmに読み込ませるときに落ちているのではないかと思います。もしこの場合で何故できないのかと、できる方法について有識者の方回答をお願いしたいです。

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

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

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

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

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

TsukubaDepot

2020/09/02 05:37

上記のコードそのものは問題なく実行できるようですが、具体的にどのような操作をした時に落ちてしまうのでしょうか。 上記のコードに「落ちてしまうときの処理」も追加していただいた方がいいかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問