JSON フィードを使用するアプリに取り組んでいますが、フィードが正しくないかオブジェクトが欠落している場合、アプリがクラッシュすることがわかりました。
これは現在受信しているフィードです。通常、Web サービスが動作しているときに ID を受信します。
result = {
data = {
result = (
"<null>"
);
};
success = 1;
};
}:
現在、このようにフィードを解析しています
NSDictionary *results = [json objectForKeyOrNil:@"result"];
NSString *success = [results objectForKeyOrNil:@"success"];
NSDictionary *data = [results objectForKeyOrNil:@"data"];
NSDictionary *resultsArray = [data objectForKeyOrNil:@"result"];
最後に、不足しているオブジェクトを取得しようとするためにこれを行っています
NSString *test = [dictionary objectForKeyOrNil:@"id"];
そしてこの時点でアプリがクラッシュします
objectForKeyOrNil を使用しているカテゴリ クラスは、クラッシュを防ぐことを望んでいましたが、それも機能しないようです。
- (id)objectForKeyOrNil:(id)key {
id val = [self objectForKey:key];
if ([val isEqual:[NSNull null]]) {
return nil;
}
return val;
}
受信したクラッシュ メッセージ -[NSNull objectForKeyOrNil:]: インスタンス 0x248e678 に送信された認識されないセレクター
ここで元の投稿を更新すると思ったのですが、これを行うときにIDを確認することを提案した人が何人かいましたが、それでもクラッシュします
NSDictionary *resultsArray = [data objectForKeyOrNil:@"result"];
// Loop through the downloaded data
for (NSDictionary *dictionary in resultsArray) {
id val = [dictionary objectForKey:@"id"];
if ([val isEqual:[NSNull null]] || val==nil) {
}
NSLog(@"Should be OK");
上記のコードでは、NSLog ステートメントに到達することはありません
どんな助けでも大歓迎です
ありがとうアーロン