【发布时间】:2014-01-23 10:34:55
【问题描述】:
我在如下结构中实现了一个简单的 REST 请求:
RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];
operation.targetObject = nil;
operation.savesToPersistentStore = YES;
operation.managedObjectContext = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext;
operation.managedObjectCache = [RKManagedObjectStore defaultStore].managedObjectCache;
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
// Handle success
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
// Handle failure
}];
如何修改代码,以便:
- 如果成功,我需要清空 DB 上的相关实体,并将其内容替换为来自 WS 的新实体(不更新,替换整个内容);
- 如果发生故障,不应发生任何事情,并且 DB 上的实体必须保持原样。
为了删除数据库实体,在操作之前我会按照此处报告的方式进行操作: Core Data: Quickest way to delete all instances of an entity, 但无论 WS 答案是什么,这都会清空实体。
非常感谢任何帮助, 非常感谢, 丹
EDIT1:
按照@Wain 的建议,我在操作中添加了一个获取请求块,如下所示:
RKFetchRequestBlock fetchRequestBlock = ^NSFetchRequest *(NSURL *URL)
{
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"EntityToBeUpdated"];
fetchRequest.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey:@"order" ascending:NO] ];
return fetchRequest;
};
operation.fetchRequestBlocks = @[fetchRequestBlock];
operation.deletesOrphanedObjects = YES;
但结果没有改变:db 上的项目没有更新或删除。
【问题讨论】:
标签: ios rest core-data restkit