2017-02-20 1 views
0

J'utilise Objectmapper et Realm pour mon projet.Comment puis-je avoir une propriété personnalisée (Computed) dans objectmapper?

J'ai un objet comme suit

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 
} 

Je pensais d'écrire une propriété calculée pour y parvenir, mais Realm ne prend pas en charge les propriétés calculées comme clé primaire. Mais je devrais utiliser cela comme clé primaire. Est-il possible que je puisse manipuler pour ajouter cette valeur après la réponse du serveur.

Note: J'utilise AlamofireObjectMapper.

J'utilise la méthode suivante qui analyse la réponse du serveur et me donne l'objet modèle.

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

Comment votre classe modèle ressemble à? –

Répondre

1

Vous devriez vraiment envisager d'avoir une sorte de id comme la clé primaire et non calcul des autres propriétés (ce qui se passe si elles sont vides ou le calcul ne va pas? Vous seriez parti sans une clé primaire valide).

Toutefois, si vous avez vraiment besoin, vous pouvez essayer

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

et ne pas oublier de définir path comme la clé primaire dans la classe 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" 
    } 
}