更新:これは、RestKitv0.10.x以降では機能しなくなりました。@moonwave99の答えを参照してください。
解決策を見つけました!
nullオブジェクトを空の配列に変更していることを除けば、moonwaveの提案と非常によく似た処理を行うことになりました。
- (void)objectLoader:(RKObjectLoader*)loader willMapData:(inout id *)mappableData {
id events = [*mappableData objectForKey:@"events"];
if (events == [NSNull null]) {
NSLog(@"it's null");
[*mappableData setObject:@"" forKey:@"events"];
}
}
nullではなく空の配列を正常に処理するには、不明なキーパスを無視するようにイベントマッピングに指示する必要がありました。
[eventsMapping setIgnoreUnknownKeyPaths:YES];
これで、didFailWithErrorデリゲートメソッドを呼び出す代わりに、RestKitは私がずっと期待/期待していたようにdidLoadObjectsを呼び出します。そこから、ネイティブのCocoaオブジェクトに割り当てる前に、配列が空かどうかを確認できます。
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
if ([objects count] == 0) {
// No events, alert user
}
else if ([[objects objectAtIndex:0] isKindOfClass:[Events class]]) {
Events *events = [objects objectAtIndex:0];
}