簡體   English   中英

RestKit:兩個單獨的提要,兩種不同的對象類型。 一個對象管理器?

[英]RestKit: two separate feeds, two different object types. One object manager?

我第一次與RestKit合作,我感到非常高興,不幸的是,當前項目使我陷入困境。

首先,我有兩個提要。 一則新聞,一則照片...

新聞提要...

[
    {"id":1234, "title":"Top story"},
    {"id":1235, "title":"Next story"},
    {"id":1236, "title":"Final story"}
]

照片提要...

[
    {"id":1919, "url":"president.jpg"},
    {"id":1920, "url":"celebrity.jpg"},
    {"id":1921, "url":"sports.jpg"}
]

...在我的核心數據模型中,我創建了與這些屬性匹配的這些實體。 我還為RestKit設置了映射...

RKManagedObjectMapping* newsMapping = [RKManagedObjectMapping mappingForEntityWithName:@"News"];
newsMapping.primaryKeyAttribute = @"id";

[newsMapping mapKeyPath:@"id" toAttribute:@"id"];
[newsMapping mapKeyPath:@"title" toAttribute:@"article_id"];

[objectManager.mappingProvider setMapping:newsMapping forKeyPath:@"News"];


RKManagedObjectMapping* photoMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Photo"];
photoMapping.primaryKeyAttribute = @"id";

[photoMapping mapKeyPath:@"id" toAttribute:@"id"];
[photoMapping mapKeyPath:@"url" toAttribute:@"url"];

[objectManager.mappingProvider setMapping:photoMapping forKeyPath:@"Photo"];

...在上面的代碼中,我知道Feed中沒有指定的keyPath,但是提供空的keyPath似乎會覆蓋映射,而RestKit似乎會忽略Feed中缺少的keyPAth。 接下來,在每個顯示對象的視圖控制器中,我運行一些非常相似的代碼...

RKObjectManager* objectManager = [RKObjectManager sharedManager];
// objectManager.inferMappingsFromObjectTypes = YES;

[objectManager loadObjectsAtResourcePath:@"json/news" delegate:self block:^(RKObjectLoader* loader) {
    loader.objectMapping = [objectManager.mappingProvider objectMappingForClass:[News class]];
}];

...足夠的背景 所有這些代碼一起加載零新聞和零照片。 如果我注釋掉了照片映射,則所有新聞項都會填充,如果注釋掉新聞映射,則我的照片會出現在商店中。

RestKit無法將每個供稿的內容與其映射一起匹配。 setMapping:forKeyPath:中指定的鍵路徑將無效,因為提要中未指定任何內容。 我想也許objectManager.inferMappingsFromObjectTypes = YES會讓RestKit檢查每個提要有什么並選擇適當的映射,但是沒有。 另外,我假設objectMappingForClass:會自動拾取正確的映射,但是沒有。 有誰知道如何使這項工作嗎?

更新:實際上,即使RestKit在第一次運行該應用程序時報告沒有加載任何項目,但是如果我停下來再次運行,我現在將看到從緩存中加載的所有20個新聞項目和20張照片。 我通過運行一次來​​確認這一點,看到消息“將所有0個新聞對象緩存到線程本地存儲中”,然后立即打開.sqlite文件,並按預期看到所有20個項目。

該評論: https : //groups.google.com/d/msg/restkit/b0K0nCha8D0/VadnqDVB1-oJ使我走上了正確的道路。 我有一個帶有現有Core Data堆棧的項目,一旦刪除了與該代碼相關的所有其他存儲和上下文集,等等,一切就變得很吸引人。 多么棒的框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM