我的设置
以下一切正常:
RKManagedObjectMapping* chanMapping = [RKManagedObjectMapping mappingForClass:[Channel class] inManagedObjectStore:objectStore];
chanMapping.primaryKeyAttribute = @"chanId";
[chanMapping mapKeyPathsToAttributes:
@"id",@"chanId",
@"name", @"chanName",
nil];
[objectManager.mappingProvider setMapping:chanMapping forKeyPath:@"Channels.channel"];
我可以打电话
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/channels" delegate:self];
我从服务器获取我的频道,它们由 Core Data 本地存储。完美的。
问题
但是,我现在不想让 RestKit 自动从核心数据存储中删除通道,这些通道在下次执行 GET 时已从服务器中删除。我了解通过添加以下内容来支持这一点:
[objectManager.mappingProvider setObjectMapping:chanMapping forResourcePathPattern:@"/channels" withFetchRequestBlock:^ (NSString *resourcePath) {
return [Channel fetchRequest];
}];
但是,只要服务器上有任何新内容,所有频道都会被删除。
我尝试过的事情[更新]
我已经使用下面答案中的步骤进行了调试。看起来好像映射不起作用/没有找到(即我没有正确地将映射与资源路径相关联)。
在数组中看起来不错,具有上次应该存在的所有对象,但deleteCachedObjectsMissingFromResult
数组是空的,这显然导致始终存在并且所有对象都被删除。cachedObjects
results
[results containsObject:object]
NO
我是否需要更改与资源路径映射有关的内容?