Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c RestKit:两个单独的提要,两种不同的对象类型。一个对象管理器?_Objective C_Ios_Core Data_Restkit - Fatal编程技术网

Objective c RestKit:两个单独的提要,两种不同的对象类型。一个对象管理器?

Objective c RestKit:两个单独的提要,两种不同的对象类型。一个对象管理器?,objective-c,ios,core-data,restkit,Objective C,Ios,Core Data,Restkit,我第一次使用RestKit,我非常高兴,不幸的是,当前的项目让我陷入了困境 首先,我有两个提要。一个是新闻,一个是照片 新闻源 [ {"id":1234, "title":"Top story"}, {"id":1235, "title":"Next story"}, {"id":1236, "title":"Final story"} ] 照片源 [ {"id":1919, "url":"president.jpg"}, {"id":1920, "ur

我第一次使用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"];
…在上面的代码中,我知道提要中不存在指定的键路径,但提供空键路径似乎只是覆盖了映射,RestKit似乎忽略了提要中缺少的键路径。接下来,在显示对象的每个视图控制器中,我运行了一些非常类似的代码

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项。

此注释:将我发送到正确的路径。我有一个项目,有一个现有的核心数据堆栈,一旦我删除了所有与其他存储和上下文集相关的代码,等等。一切都很有魅力。多棒的框架啊