gpt4 book ai didi

swift - 如何保存 Realm 关系(列表)

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:18 25 4
gpt4 key购买 nike

我曾尝试将 Realm 对象保存到我的数据库中,但没有成功。

这是我的模型:

class CreditCard: Object {
dynamic var owner: String?
var purchases: List<Purchase>()
}

第二类看起来像这样:

class Purchase: Object {
dynamic var id: Int = 0
dynamic var name: String?
dynamic var data: String?
let creditCard = LinkingObjects(fromType: CreditCard.self, property: "purchases")
}

我可以很好地保存所有 CreditCard 对象。

在第二个 View Controller 上,我有另一个请求,下载所有通过信用卡进行的购买。在请求之后,这就是我尝试写入 Realm 的方式:

let creditCard = realm.objects(CreditCard.self).first // there's some code to get this. 
try! realm.write {
for purchase in purchases { // purchases = objects from a son
let newPurchase = Purchase()
newPurchase.id = purchase["Id"].intValue
newPurchase.name = purchase["name"].stringValue
newPurchase.date = purchase["date"].dateValue

creditCard.purchases.append(newPurchase)
realm.add(creditCard, update: true)
}
}

由于某种原因,当应用程序关闭时,所有购买对象都会丢失。购买保存在我的 Realm 对象中,但 CreditCard 和 Purchase 之间的关系丢失了。因此,当我重新打开应用程序时,下面代码的返回始终为空:

let purchases = creditCard.purchases

我做错了什么?

最佳答案

您还需要保存购买,而不仅仅是在父信用卡对象中。

let creditCard = realm.objects(CreditCard.self).first // there's some code to get this. 
try! realm.write {
for purchase in purchases { // purchases = objects from a son
let newPurchase = Purchase()
newPurchase.id = purchase["Id"].intValue
newPurchase.name = purchase["name"].stringValue
newPurchase.date = purchase["date"].dateValue
realm.add(newPurchase) // <-- save the purchase object to realm

creditCard.purchases.append(newPurchase)
}
}

信用卡对象已存在于 Realm 中,因此不要再次添加。

关于swift - 如何保存 Realm 关系(列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40534022/

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