2017-05-31 1 views
0
{ 
    "in_app": [ 
    { 
     "email": "[email protected]", 
     "active_platforms": [ 
     "email" 
     ], 
     "type": "primary_email", 
     "linked_to": { 
     "_id": "59245c790550bb34cd42e51d", 
     "company": "ABC Corp", 
     "image": " ", 
     "designation": "CEO", 
     "name": "John Doe" 
     } 
    }, 
    { 
     "email": "[email protected]", 
     "active_platforms": [ 
     "email" 
     ], 
     "type": "primary_email", 
     "linked_to": { 
     "_id": "5926b5d780ff2ad821a669dab134d", 
     "company": null, 
     "image": null, 
     "designation": null, 
     "name": null 
     } 
    } 
    ] 
} 

InAppUser ModellREICH MAPPING null

class InAppUser: Object, Mappable{ 
    dynamic var email: String = "" 
    dynamic var type: String = "" 
    dynamic var linked_to: AppUser? 

    required convenience init?(map: Map) { 
     self.init() 
    } 


    func mapping(map: Map) { 
     email <- map["email"] 
     type <- map["type"] 
     linked_to <- map["linked_to"] 

    } 

} 

class AppUser : Object, Mappable { 

    dynamic var userId: String = "" 
    dynamic var company: String = "" 
    dynamic var designation: String = "" 
    dynamic var name: String = "" 
    dynamic var image: String = "" 
    dynamic var email: String = "" 


    override class func primaryKey() -> String? { 
     return "email" 
    } 

    required convenience init?(map: Map) { 
     self.init() 
    } 

    func mapping(map: Map) { 
     userId <- map["_id"] 
     company <- map["company"] 
     designation <- map["designation"] 
     name <- map["name"] 
     image <- map["image"] 
     email <- map["login_email"] 
    } 
} 

, wenn ich meinen Eintrag ausdrucken richtigen Werte in der ersten „linked_to“ zeigt aber später, wenn ich den ganzen Bereich Objekt ziehen nur ID in „linked_to“ kommt und anderer Name, usw. ist null für [email protected].

[email protected] hat Namen, aber immer noch wird es jetzt angezeigt. für [email protected] ist es in Ordnung, da es null zurückgibt.

Antwort

1

Sie haben die E-Mail als Primärschlüssel für AppUser festgelegt und sie auf "login_email" gemappt. In Ihrem JSON haben Sie keine "login_email" für die linked_to Teile, so dass der Primärschlüssel immer eine leere Zeichenfolge ist (der Standard, den Sie festgelegt haben, ist ""). In der Tat überschreiben Sie immer den gleichen AppUser. Der letzte im Array hat alle Felder als null und daher enden alle Benutzer (oder eigentlich der einzige Benutzer) in allen Eigenschaften mit null.

Sie sollten entweder sicherstellen, dass alle "linked_to" -Benutzer in Ihrem json eine "login_email" haben oder Ihren Primärschlüssel in etwas ändern, das tatsächlich einzigartig ist, wie die userId.

+0

Danke, das hat geholfen. – Nitesh