2011-08-16 65 views
0

在我的應用程序中,我使用用戶提要檢索我的應用程序完成的文章。我只需檢索所有帖子,並在每個帖子上比較應用的ID號。Facebook圖形api數據不一致的應用程序數據IOS

這項工作正常。但是我發現這種方法存在一個錯誤。由於應用程序節點並不總是一致的。通常,當有一個帖子不是由應用完成的,詞典中的條目只是說(空),沒有任何數據。這不會產生任何問題。

但有一個應用程序在此應用程序節點中有其他數據。這個節點中有具體說明的數據(注意()和<>之間的區別)。但我似乎無法檢查帶有該帖子的字典是否包含在內。我已經嘗試了以下內容:

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

這一個給出了一個SIGABRT,與之前SIGABRT以下的NSLog:

結果(空)

結果{ 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類]:無法識別的選擇器發送到類0x177485c 2011-08-16 20:37:53.745 TabbedCalculation [4546:10403] ***終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因:'+ [NSDictionary類]:無法識別的選擇器發送到類0x177485c' – Jos

+0

明白了!一些小的調整:如果([resultPost1 isKindOfClass:[NSDictionary類]]){}它工作 – Jos

+0

對不起,我沒有在XCode中檢查。我編輯瞭解決錯誤的答案。 –

相關問題