2015-10-07 10 views
0

我想在嵌套的RLMObject中設置相同的主鍵。
如何設置與RKObjectMapping相同的ID?如何使用RKObjectMapping在嵌套的RLMObject中設置相同的主鍵?

首先,我做了下面的json文件。
JSON文件

{ 
    "id": 1 
    "obj2": { 
    "name": "name1" 
    } 
} 

其次,我提出以下迅速的類文件。
類文件

class Obj2: RLMObject { 
    dynamic var id: Int <-- I want to set same id as Obj1.id 
    dynamic var name: String! 

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

    class func responseMapping() -> RKObjectMapping { 
     let objectMapping = RKObjectMapping(forClass: self) 
     objectMapping.addAttributeMappingsFromDictionary([ 
      "name": "name" 
     return objectMapping 
    } 
} 

class Obj1: RLMObject { 
    dynamic var id: Int! 
    dynamic var obj2: Obj2? 

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

    class func responseMapping() -> RKObjectMapping { 
     let objectMapping = RKObjectMapping(forClass: self) 
     objectMapping.addAttributeMappingsFromDictionary([ 
      "id": "id" 

     objectMapping.addPropertyMappingsFromArray([ 
      RKRelationshipMapping(fromKeyPath: "obj2", toKeyPath: "obj2", withMapping: Obj2.responseMapping()) 
     ]) 

     return objectMapping 
    } 
} 

回答

1

您將需要設置你的映射相同的JSON對象的基礎上,而不是遍歷範圍,這將使依賴關係的映射。

class Obj2: RLMObject { 
    dynamic var id: Int 
    dynamic var name: String! 

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

    class func responseMappingForBeingOwnedByObj1() -> RKObjectMapping { 
     let objectMapping = RKObjectMapping(forClass: self) 
     objectMapping.addAttributeMappingsFromDictionary([ 
      "id": "id", 
      "name": "obj2.name" 
     ]) 
     return objectMapping 
    } 
} 

class Obj1: RLMObject { 
    dynamic var id: Int! 
    dynamic var obj2: Obj2? 

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

    class func responseMapping() -> RKObjectMapping { 
     let objectMapping = RKObjectMapping(forClass: self) 
     objectMapping.addAttributeMappingsFromDictionary([ 
      "id": "id" 
     ]) 

     objectMapping.addPropertyMappingsFromArray([ 
      RKRelationshipMapping(fromKeyPath: ".", toKeyPath: "obj2", withMapping: Obj2.responseMappingForBeingOwnedByObj1()) 
     ]) 

     return objectMapping 
    } 
} 

警告的一些遺言:RestKit在這一點上並不真正支持Realm。因此,您現在可能會更好地使用別的東西,例如Realm對解碼對象表示的內置支持有限,Realm+JSONDecodable

+0

我可以設置鑰匙。感謝您的建議! – naohide

相關問題