2011-08-16 12 views
0

私のアプリでは、ユーザーのフィードを使用して私のアプリで行われた投稿を取得しています。私は単純にすべての投稿を取得し、すべての投稿でアプリのID番号を比較します。Facebookのグラフapiデータの一貫性のないアプリケーションデータIOS

この作業は問題ありません。しかし、私はこの方法でバグを見つけました。アプリケーションノードが常に一貫しているとは限らないためです。通常、アプリケーションによって行われていない投稿がある場合、辞書のエントリは単に(null)と表示され、データはありません。これは何ら問題はありません。

しかし、このアプリケーションノードには他のデータを持つアプリがあります。このノードには、具体的には(()と<>の違いに注意してください)というデータがあります。しかし、私はそのポストを持つ辞書がそれに含まれているかどうかを確認する方法を考えることができません。私が試した次

NSDictionary *resultPost1 =[resultPost objectForKey:@"application"]; 
      NSLog(@"result%@", [resultPost objectForKey:@"application"]); 
      if ([resultPost1 count] != 0) { 

この1つはSIGABRT前に、次のNSLogとSIGABRT、与える:

結果(null)を

結果{ ID = 1957711133323244365557378。 name = "app"; }

結果<ヌル>(可視化のための追加のスペース)

は私も成功せず、またisEqualtoString:@"< null>"を試してみました。

時には、アプリケーションノード内の辞書であり、時には文字列であることもあります。

誰でも手掛かりがありますか?ありがとう!!!

答えて

1

辞書から返されるオブジェクトの種類が保証されていないため、いくつかのチェックを行う必要があります。

NSDictionary *resultPost1 = [resultPost objectForKey:@"application"]; 
if ([[resultPost1 class] isKindOfClass:[NSDictionary class]) { 
    //Treat as a dictionary 
} 
else if ([[resultPost1 class] isKindOfClass:[NSString class]) { 
    //Treat as a string 
} 
else if ([resultPost1 isEqual:[NSNull null] || !resultPost) { 
    //Treat as Null, note the json library Facebook uses might set 
    //a json NULL into a NSNull object instead of nil 
} 
+0

これは、私が探しているものです。しかし、それはかなりうまくいきません:それは私に次の出力でsigabrtを与えます:+ [NSDictionary Class]:クラス0x177485cに送られた認識不能なセレクタ 2011-08-16 20:37:53.745 TabbedCalculation [4546:10403] 'NSInvalidArgumentException'、理由: '+ [NSDictionary Class]:クラス0x177485cに送信された認識できないセレクタ' – Jos

+0

が見つかりました!いくつかの小さな調整:if([resultPost1 isKindOfClass:[NSDictionary class]]){}そしてそれは働いた – Jos

+0

それについて申し訳ありません:私はそれをXCodeでチェックせずに書きました。私はタイプミスを修正する答えを編集しました。 –

関連する問題