gpt4 book ai didi

ios - 保存与 Realm 的多对多关系

转载 作者:行者123 更新时间:2023-11-30 13:41:46 24 4
gpt4 key购买 nike

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

在第一个 View 中,我创建了主要对象。这是类(class):

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)
}

这可以正常工作,并且当我重新启动应用程序时,我添加的对象也存在。

当用户单击“编辑”时,它将打开下一个 View :

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

}

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

第一次尝试:

    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)
}

最佳答案

问题是

let realm = try! Realm()

文档指定

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

您在两个 View Controller 上都进行了操作,并且不能保证默认 Realm 的路径相同。它可能适用于实际设备,但不适用于模拟器。尝试此操作并删除所有其他出现的情况

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

希望这有帮助

关于ios - 保存与 Realm 的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35482514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com