RestKit 升级到 0.10.0 后崩溃
Posted
技术标签:
【中文标题】RestKit 升级到 0.10.0 后崩溃【英文标题】:RestKit crashes after upgrading to 0.10.0 【发布时间】:2012-05-13 02:10:22 【问题描述】:我似乎能够很好地启动 restkit 并使用传统的 loadobjectsatresourcepath:delegate: 方法加载对象。但是,当我引入 block:^ 时,restkit 每次都会崩溃。
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/api/v1/places" delegate:self block:^(RKObjectLoader* loader)
loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[Place class]];
];
我在日志中得到了这个:
2012-05-12 19:07:32.266 App - [RKObjectManagerloadObjectsAtResourcePath:delegate:block:]: unrecognized selector sent to instance 0x3aa2e0
2012-05-12 19:07:32.268 App - *** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[RKObjectManager loadObjectsAtResourcePath:delegate:block:]: unrecognized selector sent to instance 0x3aa2e0'
关于如何解决此问题的任何想法?谢谢!
【问题讨论】:
【参考方案1】:异常告诉您问题的确切原因:RKObjectManager
不响应 loadObjectsAtResourcePath:delegate:block:
。快速浏览 API 文档会发现 the original method 在 0.10.0 中不再存在,并且似乎已被 loadObjectsAtResourcePath:usingBlock: 替换。
您应该能够通过使用新方法来避免异常:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/api/v1/places" usingBlock:^(RKObjectLoader* loader)
loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[Place class]];
];
【讨论】:
谢谢!这就是我所怀疑的。这让我很困惑,然后我发现 Xcode 正在链接一个旧的 Restkit 库并且我的代码完成工作不正常。删除我的派生数据内容并重建后,一切正常。以上是关于RestKit 升级到 0.10.0 后崩溃的主要内容,如果未能解决你的问题,请参考以下文章
使用 Restkit 在 Core Data 中删除后保存对象使其崩溃
Restkit 0.10.0 & ios 6.1 - objectLoaderWithResourcePath:delegate 方法不进行 http 调用