与领域保存多对多关系

时间:2016-02-18 13:15:25

标签: ios xcode swift realm

问题是,我可以添加与我的对象的关系,它暂时工作,但领域不保存更改,当我退出应用程序并重新启动ist时,关系就消失了。

在第一个视图中,我创建了主对象。这是班级:

class UserListClass: Object {
    dynamic var UserListName = ""
    let Medis = List<MediClass>()

    override static func primaryKey() -> String? {
        return "UserListName"
    }
}

我创建对象的代码:

            let realm = try! Realm()
            let newList = UserListClass ()
            newList.UserListName = textField.text!
            try! realm.write {
                realm.add(newList)
            }

这没有问题,当我重新启动应用程序时,我添加的对象也在那里。

当用户点击编辑时,它将打开下一个视图:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showUserlistEdit" {
        let editViewController = segue.destinationViewController as! MediUserlistEditViewController
        editViewController.userlist = userlist
    }

}

在下一个视图中,代码将所选条目添加到列表中,我尝试了两个版本,但两者都有结果,它只保存应用程序运行时的关系。当我重新启动它时,它们就不在了。

首先尝试:

    let realm = try! Realm()
    try! realm.write {
        userlist.Medis.append(medi)
        realm.add(userlist, update: true)
    }

第二次尝试:

    let realm = try! Realm()
    try! realm.write {
        userlist.Medis.append(medi)
    }

1 个答案:

答案 0 :(得分:0)

问题是

let realm = try! Realm()

文档指定

// Get the default Realm
let realm = try! Realm()
// You only need to do this once (per thread)

您在两个视图控制器上都做了,并且无法保证默认Realm的路径是相同的。它可能适用于实际设备但不适用于模拟器。 试试这个并删除所有其他事件

// Put this inside your Real class Definition/Declaration file
let realm = try! Realm()

希望这个帮助

相关问题