Использование NSJSONSerialization для Mac - PullRequest
2 голосов
/ 26 февраля 2012

Я пытаюсь использовать NSJSONSerialization в приложении Mac, но я не могу заставить его работать, я пытаюсь заставить его загрузить UserTimeline, и просто показать текст последнего твита, и это все, но я не могу найти правильный способ его использования.API, которые я пытался использовать:

http://api.twitter.com/1/statuses/user_timeline.json?screen_name=AlexTrott_

И

http://twitter.com/statuses/user_timeline/AlexTrott_.json

, но ни один из них я не смотрел, вот как я пытался использовать NSJSONSerialization:

NSString *tweets = [NSURL URLWithString:@"http://twitter.com/statuses/user_timeline/AlexTrott_.json"];
    NSData *jsonData = [tweets dataUsingEncoding:NSUTF8StringEncoding];
    NSError *e = nil;
    NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
    NSLog(@"%@", json);

, это именно то, что я использовал, чтобы увидеть, загрузил ли он их, но мне это не удалось.

Я также пытался собирался попробовать этот метод http://www.raywenderlich.com/5492/working-with-json-in-ios-5 однако это исключительно для iOS, и я не знаю, как заставить его работать на Mac.

Любые ссылки о том, как использовать NSJSONSerialization для Mac, были бы блестящими, или любая помощь с могла бы также быть большой благодарностью.Я пытался получить помощь на форумах разработчиков Apple, но не повезло.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012
NSURL *tweets = [NSURL URLWithString:@"http://twitter.com/statuses/user_timeline/AlexTrott_.json"];
    //NSData *jsonData = [tweets dataUsingEncoding:NSUTF8StringEncoding];
     //NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
NSData *jsonData=[NSData dataWithContentsOfURL:tweets];
NSError *e = nil;

   id yourJsonData=[NSJSONSerialization JSONObjectWithData:jsonData options:
               NSJSONReadingMutableContainers error:&error];
NSLog("%@",yourJsonData );//you must get a json object here

//let's assume you need to get the key kalled user_name from your JSON Response

NSDictionary *theJson=[yourJsonData objectForKey:@"user_name"];

for(NSMutableArray *usernames in theJson){

// do something with usernames from your object
}
0 голосов
/ 29 марта 2012

Мое приложение также получает его последний твит. Вы должны учитывать ограничения на сервер с этими запросами (350 в час). Если вы превысите этот лимит, в nsdata не будет nsarray, он является обязательным, который описывает ошибку и запрос, который, несомненно, будет учтен. Я сделал это так:

NSError* error = nil;

id responseBody = [NSJSONSerialization JSONObjectWithData:data 
                                                  options:NSJSONReadingMutableContainers
                                                    error:&error];

if (error) {

    [[NSAlert alertWithError:error] runModal];
} 

if ([responseBody respondsToSelector:@selector(objectAtIndex:)]) {

    else { 

        if ([responseBody count]) {

            NSString* currentStatus = [[responseBody objectAtIndex:0] objectForKey:@"text"]; //now you can do smth with your status))
        } 
        else {

            NSLog(@"You have not tweetted yet!");
        }
    } 
} 
else if([responseBody respondsToSelector:@selector(objectForKey:)]) {

    NSString* error = [responseBody objectForKey:@"error"];
    NSLog(@"CURRENT STATUS ERROR => %@", error);        
}
...