我有时从服务器得到的响应是一个 JSON,代表一个像这样的空对象 {}
我已经在这里阅读了这个问题/答案,其中指出我应该实现 willMapData 委托函数并将 *mappableData 指向其他地方。问题是我不知道应该为 *mappableData 分配什么,这样我的应用程序就不会崩溃。
我试过这个
- (void)objectLoader:(RKObjectLoader *)loader willMapData:(inout id *)mappableData
{
id<RKParser> parser = [[RKParserRegistry sharedRegistry] parserForMIMEType:RKMIMETypeJSON];
*mappableData = [parser objectFromString:@"{\"unknownObject\":\"\"}" error:nil];
}
但尽管如此,我的应用程序崩溃了,相当生气
'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
你能帮我吗?
更新 打开 RKDebug 消息在控制台中给了我这个:
Performing object mapping sourceObject: {
}
and targetObject: (null)
然后代码到达 RKObjectMapper.m:
if (mappableData) {
id mappingResult = [self performMappingForObject:mappableData atKeyPath:@"" usingMapping:mappingsForContext];
foundMappable = YES;
results = [NSDictionary dictionaryWithObject:mappingResult forKey:@""];
}
但是那里的mappingResult返回nil ...所以当应用程序尝试使用nil对象创建NSDictionary时崩溃。