我已经解决了我的应用在我的应用从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;
}
答案 0 :(得分:0)
我的猜测是软件是相同的,但数据是不同的。
看看你是否能找到要求的钥匙。
您可能会发现某些记录的'json在该键上有一个数组(可能,当存在多个关系时),而某些记录有一个字典(对于与单个对象的关系)。
我无法想到twitter api中的任何地方,但情况确实存在。
答案 1 :(得分:0)
这取决于output
中数据的来源。您确认您的JSON数据是一个字典数组,但服务器可能返回其他内容,例如,如果发生错误,服务器可能会返回包含错误信息的字典。
您必须查看Twitter API以查看此特定电话可能会收到哪些数据。
https://dev.twitter.com/docs/error-codes-responses
查看上面的页面,您可以使用HTTP返回代码查看请求是否失败,如果是这种情况,您可以中止此操作。