私が時々サーバーから受け取るレスポンスは、この {} のような空のオブジェクトを表す 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を作成しようとするとアプリがクラッシュします。