2011-02-24 59 views
1

我正在使用Facebook連接並嘗試處理我收到的JSON對象。 我調用requstWithGraphPath方法和需要回到一個JSON對象, 試圖解析它,卻得到了錯誤:將JSON對象(NSCFDictionary)強制轉換爲字符串並解析它

SBJSON *parser = [[SBJSON new] autorelease]; 
NSData *data = [[NSData alloc] initWithData:result]; 
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; -> in this line - "[__NSCFDictionary length]: unrecognized selector sent to instance" 
NSArray *events = [parser objectWithString:jsonString]; 

什麼問題? 我可以通過其他方式獲取字符串還是以不同方式解析對象?

謝謝。

回答

1

如果您正在使用委託回調

- (void)request:(FBRequest *)request didLoad:(id)result; 

解析工作已經爲你做的工作。遍歷NSDictionary或NSArray來查找您正在查找的數據。如果您正在使用委託回調

- (void)request:(FBRequest *)request didLoadRawResponse:(NSData *)data; 

工作,你應該初始化數據一個NSString,並使用該SBJSON增加的NSString創建一個ID類方法。假設數據是構造字符串的數據。

NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
id result = [jsonString JSONValue]; 
+0

謝謝,真的有幫助! – 2011-02-25 08:53:02

+0

你如何JSONValue?排除錯誤 – coolcool1994 2014-06-06 17:38:23

+0

JSONValue是或至少在當時是由SBJSON添加的類別方法。 – Adam 2014-08-01 16:24:22

1

您確定錯誤發生在該行嗎?或者它發生在上面的行嗎?

如果resultNSDictionary(或CFDictionary,同樣的事情),那麼它已經被解析,你不需要自己做 - 這可能會導致該錯誤信息也上線的上方。

行:

data = [[NSData alloc] initWithData:result]; 

幾乎可以肯定不是你想要做什麼,因爲它相當於

data = [result copy]; 

假設resultNSData對象(或NSMutableData),我猜猜它不是。

+0

非常感謝你! – 2011-02-25 08:53:49

相關問題