将RKManagedObjectRequestOperation与getObjectsAtPath一起使用

时间:2014-01-20 09:56:30

标签: ios restkit restkit-0.20

我正在使用iOS上的RestKit开发一个待办事项列表应用程序,我已经添加了一个获取结果块,用于从此链接(http://restkit.org/api/latest/Classes/RKManagedObjectRequestOperation.html

中删除官方类引用中的孤立对象

现在文档说明每当RKManagedObjectRequestOperation执行时,获取结果块将检查孤立对象并自动删除服务器上不存在的对象。

我使用以下代码发出请求,但问题是getObjectsAtPath创建RKObjectRequestOperation我需要RKManagedObjectRequestOperation任何人都可以指导我在这种情况下做什么吗?< / p>

使用RKObjectRequestOperation,如果孤立对象在服务器上不再存在,则不会被删除。

[[RKObjectManager sharedManager] getObjectsAtPath:@"/api/lists"
                                       parameters:nil
                                          success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) ...

映射:

RKEntityMapping *listEntityMapping = [RKEntityMapping mappingForEntityForName:@"List" inManagedObjectStore:managedObjectStore];

响应描述符:

responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:listEntityMapping method:RKRequestMethodGET pathPattern:@"/api/lists" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

JSON:

[
    {
        "list_id": "1",
        "listName": "List Name 1"
    },
    {
        "list_id": "2",
        "listName": "List Name 2"
    },
    {
        "list_id": "5",
        "listName": "List Name 3"
    },
    {
        "list_id": "7",
        "listName": "List Name 4"
    },
    {
        "list_id": "8",
        "listName": "List Name 5"
    },
    {
        "list_id": "11",
        "listName": "List Name 6"
    },
    {
        "list_id": "12",
        "listName": "List Name 7"
    }
]

2 个答案:

答案 0 :(得分:0)

如果您获得的是RKObjectRequestOperation而不是RKManagedObjectRequestOperation,那么您使用的是错误的映射。基于与作为对象或实体映射的请求URL路径模式匹配的映射来选择操作。在您的情况下,您的映射需要是RKEntityMapping实例。

答案 1 :(得分:0)

我认为您没有正确配置您的经理以使用CoreData(并创建NSManagedObject而不是NSObject s)。确保在要用于下载CoreData支持对象的管理器上设置managedObjectStore

http://restkit.org/api/latest/Classes/RKObjectManager.html#task_Configuring%20Core%20Data%20Integration