繁体   English   中英

restkit 0.20:不能将NSManagedObject传递给getObject:方法

[英]restkit 0.20: can not pass in an NSManagedObject to the getObject: method

我只是想从我的静态服务中检索一项(已确认工作)

http://www.example.com/person/25

我需要以某种方式传递URL的“ 25”部分。 我认为我应该使用RKRoute。 在RestKit中执行此操作的方法是使用RKObjectManager的getObject:方法。

使用RestKit 0.22,并且我不知道如何调用getObject:方法,因为它需要完整的Person对象,不是吗? 即使我只需要传递字符串“ 25”。

有问题的方法是: [self getObject:personNSManagedObject path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) .....

我不能只说“ Person * person = [[Person alloc] init],因为Person是一个NSManagedObject。

但是当我这样做时:

NSManagedObjectContext *moc = self.managedObjectStore.mainQueueManagedObjectContext;
NSEntityDescription *person = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:moc];
Person *personNSManObj = [[Person alloc] initWithEntity:person insertIntoManagedObjectContext:nil];
personNSManObj.id = 3;

我收到以下错误:

执行对象映射到临时目标objectID。 如果不获取永久对象ID,可能无法访问结果。 restkit.network:RKResponseMapperOperation.m:457无法检索ID为0x1664ac90的现有对象

有任何想法吗?

您应该将新对象保存回持久性存储。 数据加载和映射是在另一个线程上进行的,但是会尝试将数据映射回提供的对象。 因为对象已插入但未保存,所以它具有一个临时的受管对象ID,RestKit尝试将其转换为对象,但不能。 保存将在数据存储区中创建一个“存根”对象,RestKit将使用响应数据完全填充该存根对象(假设成功)。

一种替代方法是为字典提供所需的键/值对,该键/值对将插入到路由中。 然后,RestKit将为您创建目标对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM