【问题标题】:Realm Relation how to implement领域关系如何实现
【发布时间】: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 中检索数据。请参阅我的更新答案。

标签: ios swift realm


【解决方案1】:

只需将 dynamic 关键字放在您的属性之前

dynamic var Product : ProductModel? = nil 

【讨论】:

    最近更新 更多