2009-07-29 3 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

답변

8

은 당신이 당신의 콘솔에서보고있는 것은 한는있는 NSDictionary의 NSLog 아니라있는 NSString입니다. 가입일 매트 겜멜의 MGTwitterEngine Readme :

이러한 방법으로 전송 값을 서브 사전, 예를 들어, 타임 라인 방식은 일반적으로 상태를 리턴 (필요한 경우, 각각의 경우에 각각의 상태 나 사용자 또는 직접 메시지에 대한 NSDictionary에 포함 된 모든 NSArrays가있다 어떤 하위 사전에 해당 상태를 게시 한 사용자에 대한 정보를 제공합니다).

그래서 당신은 실제로 당신의 NSLog() 문에 사전입니다 통과하고 당신이 호출하여 필드에 액세스 할 수 있습니다 어떤 목적 : 기록 객체입니다

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

. 사용자 필드는 하위 사전입니다. 당신은 실제로있는 NSArray는 테이블 뷰의 데이터 소스로 요청에 반환하고 당신이 당신의 -cellForRowAtIndexPath 테이블 뷰 위임에 인덱스가 필요로하는 일을 추출 사용할 수

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

: 당신은이 방법으로 액세스 할 수 있습니다.

최고 감사합니다, 여기에 그들의 방법을 찾을 수있는 다른 사람들을위한

+0

감사합니다. Matt. 좋은 대답.NSArray를 테이블 데이터 소스로 사용하고 내가 필요로하는 것을 추출하여 어떤 의미인지 예를 들어 주시겠습니까? – Xcoder

0

, 여기에 결과를 PARCE하는 한 방법입니다. (초보자부터는 표준 또는 올바른 방법으로 계산하지 마십시오.)

키 (말장난 의도 : D)는 적절한 위임 방법으로 사전을 사용하는 것입니다. 주제에 대한 Matt Long의 예제 코드 in another thread을 확인하십시오.

이 같은 것을 PARCE하려면

- (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); 
    } 
} 

것은이 당신에게 "사용자 이름 (아이디)가는 매우 간단한 메시지를 줄 것이다 :

[myTwitterEngine getSearchResultsForQuery:@"#ironsavior"]; 

그분의 모범이 위임 방법이입니다 : 메시지".

계속 진행하는 가장 좋은 방법이 무엇이 될지 모르겠다. 구현의 다른 곳에서 사용할 수있는 사전이나 배열을 반환하는 것이 좋습니다. 아니면 그냥 원래 배열을 반환하고 다른 곳에서 구문 분석.

자세한 내용은 다른 스레드를 확인하십시오.