Парсинг твиттера: - [__NSCFString objectForKey:] - PullRequest
0 голосов
/ 17 марта 2012

Я исправил ошибку, с которой некоторые мои пользователи сталкивались при загрузке моего приложения JSON из Twitter:

-[__NSCFString objectForKey:] unrecognized selector

После исследования я считаю, что проблема была в результате использования NSDictionary вместо NSArray,Мой вопрос, однако, почему некоторые пользователи с ТОЧНЫМ устройством и версией iOS испытывают ошибку периодически?Почему бы не ошибиться каждый раз для всех или никогда?Связано ли это с использованием памяти на устройстве или прерыванием приема данных с сервера?

РЕДАКТИРОВАТЬ:

//I have since changed statuses to an NSArray
NSDictionary *statuses = [[NSDictionary alloc] init];

statuses = [output JSONValue];  

for (NSDictionary *status in statuses)
{
            Tweets *aTweet = [[Tweets alloc] init];

            //error began (fatal error) on following line
            aTweet.text = [status objectForKey:@"text"];
            aTweet.created_at = [status objectForKey:@"created_at"];
            aTweet.created_date = [dateImporter dateFromString:aTweet.created_at];

            [self.tweets addObject:aTweet];

            aTweet = nil;
 }

Ответы [ 2 ]

0 голосов
/ 18 марта 2012

Зависит от того, откуда поступают данные в output. Вы предполагаете, что ваши данные JSON являются массивом словарей, но возможно, что сервер возвращает что-то еще, например, если произошла ошибка, сервер может вернуть словарь с некоторой информацией об ошибке.

Вам нужно будет взглянуть на API Twitter, чтобы узнать, какие данные вы можете получить для этого конкретного вызова.

https://dev.twitter.com/docs/error-codes-responses

Глядя на страницу выше, вы можете использовать HTTP-код возврата, чтобы увидеть, не выполнен ли запрос, и если это так, вы можете просто прервать эту операцию.

0 голосов
/ 18 марта 2012

Я думаю, что программное обеспечение одинаковое, но данные разные.

Посмотрите, сможете ли вы узнать, какой ключ запрашивается.

Возможно, вы найдете этоу некоторых записей json есть массив с этим ключом (возможно, когда существует более одного отношения), а у некоторых есть словарь (для отношения с одним объектом).

Я нигде не могу представитьTwitter API, где это так, но это понятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...