【发布时间】:2018-12-10 23:52:49
【问题描述】:
我在 iOS 上工作,这正在节省产品。而且这个产品的模型里面还有更多的东西
假设以下模型
@objcMembers public class ProductModel : Object, Codable {
dynamic var Id : Int = 0
dynamic var Name : String = 0
dynamic var Price : Double = 0.0
}
包含ProductModel的其他模型(CustomerModel)如下
@objcMembers public class CustomerModel : Object, Codable {
dynamic var Id : Int = 0
dynamic var Name : String = 0
var Product : ProductModel? = nil
}
现在,当我保存包含产品的客户时,我可以看到在 Realm 中它已成功保存。但当且仅当该对象不在 Realm 中时,
假设这个
let customer1 = CustomerModel()
customer1.Id = ...
customer1.Name = .....
customer1.Product = product1
现在此客户数据已保存。但是如果我尝试保存以下数据,我会遇到异常
let customer2 = CustomerModel()
customer2.Id = ...
customer2.Name = .....
customer2.Product = product1
请注意,customer2 还希望保存已经保存在 Realm 中的产品信息,即“product1”。
那么如何处理这种情况。
我正在尝试使用以下用于领域对象的通用函数来保存数据
func save <T: Object> (_ obj : T){
do {
try realmObj.write{
realm.add(obj)
}
}catch{}
}
问题 2:
我也想获得所有客户,我知道该怎么做,但问题是它永远不会检索客户内部的产品。我可以在 Realm DB Browser 中看到与产品一起保存的客户,该客户表也包含 Product 的引用。但是当我尝试获得所有客户时,该客户只有客户详细信息而不是产品详细信息。而那必须在那里。
【问题讨论】:
-
你试过 add(_:update:) 方法吗,update = true?
-
另外 CustomerModel 或产品模型没有任何主键。尝试添加这些。
-
是的,那些有主键,那些模型只是演示
-
好的,add(_:update:) 方法有效吗?我曾经做你正在做的事情,我没有做任何不同的事情。你能发布确切的错误吗?
-
是的,就在我发布问题之后,我尝试了更新,它确实有效。但是如何从 Realm 中检索数据。请参阅我的更新答案。