2009-07-29 57 views
2

我下載了MGTwitterEngine並添加到我的iPhone項目中。這是連接和獲取雕像,我可以告訴他們將它們傾倒入NSLog。但是,我不知道如何解析這些調用,以便將它們添加到表中。他們返回一個NSString,看起來像這樣:MGTwitterEngine和iPhone

 { 
    "created_at" = 2009-07-25 15:28:41 -0500; 
    favorited = 0; 
    id = 65; 
    source = "<a href=\"http://twitter.com/\">Twitter</a>"; 
    "source_api_request_type" = 0; 
    text = "The wolf shirt strikes again!! #sdcc :P http://twitpic.com/blz4b"; 
    truncated = 0; 
    user =   { 
     "created_at" = "Sat Jul 25 20:34:33 +0000 2009"; 
     description = "Host of Tekzilla on Revision3 and Qore on PSN. Also, a geek."; 
     "favourites_count" = 0; 
     "followers_count" = 0; 
     following = false; 
     "friends_count" = 0; 
     id = 5; 
     location = "San Francisco"; 
     name = "Veronica Belmont"; 
     notifications = false; 
     "profile_background_tile" = false; 
     "profile_image_url" = "http://blabnow.com/avatar/Twitter_10350_new_twitter_normal.jpg"; 
     protected = 0; 
     "screen_name" = Veronica; 
     "statuses_count" = 2; 
     "time_zone" = UTC; 
     url = "http://www.veronicabelmont.com"; 
     "utc_offset" = 0; 
    }; 

任何人使用這個,可以告訴我其他人如何使用它自己的項目?

感謝

+0

這是標準的JSON,不是嗎? 我相信這是去到JSON解析器可可/可可觸摸:http://code.google.com/p/json-framework/ – Hunter 2009-07-29 04:47:17

回答

8

你們看到在你的控制檯是一個NSDictionary的NSLog的,而不是一個NSString。馬特Gemmell的MGTwitterEngine Readme

發送到這些方法的值是包含一個NSDictionary對各狀態或用戶或直接消息的所有NSArrays,與子字典如果必要的話(例如,時間線方法通常返回狀態,每個其中有一個子字典,提供有關發佈該狀態的用戶的信息)。

所以,你通過什麼對象添加到您的NSLog()語句實際上是一本字典,你可以用電話訪問的字段:

NSString *createdAtDate = [record valueForKey:@"created_at"]; 
NSString *source = [record valueForKey:@"source"]; 
// etc... 

記錄是對象。請記住,用戶字段是一個子字典。您訪問這樣說:

NSDictionary *userDict = [record valueForKey:@"user"]; 
NSString *name = [userDict valueForKey:@"name"]; 
NSString *location = [userDict valueForKey:@"location"]; 
// etc... 

實際上,你可以使用的NSArray在請求作爲你的表視圖的數據源返回,然後就提取您在-cellForRowAtIndexPath表視圖代表需要通過索引中的一個。

最好的問候,

+0

謝謝馬特。很好的答案。你能給我一個例子,說明你使用NSArray作爲表格數據源並提取我需要的內容的含義嗎? – Xcoder 2009-07-29 14:07:19

0

爲別人誰可能在這裏找到自己的方式,下面就來parce結果的一種方式。

的關鍵(雙關語意:d)(從一個新手,所以不要這個作爲標準,甚至正確的方式計數)是使用字典中相應的委託方法。查看Matt Long的示例代碼in another thread

要parce是這樣的:

[myTwitterEngine getSearchResultsForQuery:@"#ironsavior"]; 

他的例子是這樣的,在委託方法:

- (void)searchResultsReceived:(NSArray *)searchResults 
        forRequest:(NSString *)connectionIdentifier 
{ 
    if ([searchResults count] > 0) 
    { 
     NSDictionary *result = [searchResults objectAtIndex:0]; 

     NSString *fromUser = [result valueForKey:@"from_user"]; 
     NSString *fromUserID = [result [email protected]"from_user_id"]; 
     // ... 
     NSString *text = [result [email protected]"text"]; 

     NSLog(@"User %@(%@): %@", fromUser, fromUserID, text); 
    } 
} 

這會給你一個很簡單的信息,即變爲「用戶的用戶名(用戶ID) : 信息」。

我不知道什麼是最好的方式繼續會是這樣,我想返回一個字典或者,你可以在你的執行的其他地方使用數組。或者只是返回原始數組並在別處解析它。

檢查出其他線程獲取更多信息。