首页 > 解决方案 > 领域关系如何实现

问题描述

我正在开发 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 的引用。但是当我尝试获得所有客户时,该客户只有客户详细信息而不是产品详细信息。而那必须在那里。

标签: iosswiftrealm

解决方案


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

dynamic var Product : ProductModel? = nil 

推荐阅读