解析Twitter提要: - [__ NSCFString objectForKey:]

时间:2012-03-17 19:50:24

标签: iphone objective-c ios json twitter

我已经解决了我的应用在我的应用从Twitter加载JSON时遇到的错误:

-[__NSCFString objectForKey:] unrecognized selector

经过研究,我认为问题是使用NSDictionary而不是NSArray的结果。但是,我的问题是为什么一些拥有EXACT相同设备和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 :(得分:0)

我的猜测是软件是相同的,但数据是不同的。

看看你是否能找到要求的钥匙。

您可能会发现某些记录的'json在该键上有一个数组(可能,当存在多个关系时),而某些记录有一个字典(对于与单个对象的关系)。

我无法想到twitter api中的任何地方,但情况确实存在。

答案 1 :(得分:0)

这取决于output中数据的来源。您确认您的JSON数据是一个字典数组,但服务器可能返回其他内容,例如,如果发生错误,服务器可能会返回包含错误信息的字典。

您必须查看Twitter API以查看此特定电话可能会收到哪些数据。

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

查看上面的页面,您可以使用HTTP返回代码查看请求是否失败,如果是这种情况,您可以中止此操作。