2017-02-20 5 views
0

Я использую Objectmapper и Realm для моего проекта.Как я могу создать собственное свойство (Computed) в objectmapper?

У меня есть объект, как следующий

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===== 
} 
+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" 
    } 
} 
Смежные вопросы