我如何在objectmapper中拥有自定义(计算)属性?

时间:2017-02-20 09:37:20

标签: ios swift realm objectmapper

我正在为我的项目使用Objectmapper和Realm。

我有一个像

这样的对象
class File
{
  dynamic var name
  dynamic var folder
  dynamic var path // This is not coming from JSON // this should be combination of both name+folder
}

我想过编写一个计算属性来实现这个目的,但Realm不支持计算属性作为主键。

但我应该用它作为主键。从服务器响应来看,我有什么方法可以操作来添加该值。

注意:我使用的是AlamofireObjectMapper。

我使用以下方法解析服务器响应并为我提供模型对象。

 Alamofire.request(router).responseObject{ (response: DataResponse<T>) in
{
  let myModel = response.result.value // Parsed object
===== What can i do here to achieve my requirement=====
}

1 个答案:

答案 0 :(得分:1)

你真的应该考虑使用某种id作为主键,而不是从其他属性计算它(如果它们是空的或计算出错会发生什么?你没有有效主键)。

但是,如果你真的需要,你可以尝试

let realm = try Realm()
try realm.write {
      items.forEach({ (item) in
          item.path = item.name + item.folder
      }
      realm.add(items, update: true)
}

并且不要忘记将path定义为File类中的主键:

class File
{
    dynamic var name
    dynamic var folder
    dynamic var path // This is not coming from JSON // this should be combination of both name+folder

    override static func primaryKey() -> String? {
        return "path"
    }
}