2015-04-16 29 views
0

我想從兩個單獨的json文件中映射對象(同時使用RestKit播種sqlite數據庫)。這些文件通過外部ID file1Code連接。RestKit:使用外鍵連接非嵌套關係 - 爲源實體提供的無效屬性

的結構是這樣的:

文件1:

[ { 
    "code": "1", 
    "activ": false, 
    "name": "Joe" 
    }, 
    { 
    "code": "2", 
    "activ": false, 
    "name": "John" 
    } 
] 

文件2:

[ 
    { 
    "code": 666000, 
    "name": "Hausarzt", 
    "file1Code": "1", 
    "activ": false 
    } 
] 

實體文件1是這樣的:

@interface File1Entity : KeyTab 

實體對於文件2看起來像這樣:

@interface File2Entity : KeyTab 
    @property (nonatomic, retain) File1Entitiy *file1Obj; 

    // Transient 
    @property (nonatomic, retain) NSNumber *file1Code; 

KeyTab(從中既繼承)看起來是這樣的:

@interface KeyTab : NSManagedObject 
    @property (nonatomic, retain) NSNumber * code; 
    @property (nonatomic, retain) NSString * name; 
    @property (nonatomic, retain) NSNumber * activ;   

現在我嘗試使用「連接非嵌套關係使用外鍵」從RestKit文檔中發現here

我使用addConnectionForRelationship這樣的:

[file2EntityMapping addConnectionForRelationship:@"file1Obj" 
    connectedBy:@{@"file1Code": @"code"}]; 

但得到錯誤消息「無法連接關係:對於源實體給出無效的屬性」,因爲file1Obj是一個屬性,而不是一個屬性。

這是在RestKit中做到這一點的正確方法嗎?

回答

0

您需要在File2Entity上添加file1Code作爲臨時屬性,並在映射期間對其進行設置。外鍵連接在映射後完成,因此原始JSON不再可用(因此數據不存在的錯誤)。

+0

實際上,我已經把'file1Code'作爲'File2Entity'上的一個瞬態屬性。但是之後它又回到了我的[其他未解決的問題](http://stackoverflow.com/q/29670218/332248),關於如何在映射之後和對象被存儲之前攔截RestKit,以便我可以自己完成關係。 – Jens

+0

外鍵映射是如何連接關係。如果你有這個屬性,那麼你不應該看到'爲源實體提供的無效屬性'。 – Wain

+0

首先:感謝您的幫助。我試圖按照標題爲「使用外鍵連接非嵌套關係」的指南[這裏](https://github.com/RestKit/RestKit/wiki/Object-mapping)。我想我的設置與例子幾乎相同(我有兩個單獨的json文件)。 – Jens