【发布时间】:2013-01-09 08:17:22
【问题描述】:
NSDictionary *tokenData = [[responseDict objectForKey:@"data"] objectForKey:@"multipass"];
dispatch_async(dispatch_get_main_queue(), ^{
NSString *card = [NSString stringWithFormat:@"%@-%@",
[[UserAccount sharedInstance] cardNumber],
[tokenData objectForKey:@"CardPhoneToken"]]; //<-- problem
});
从昨天开始,我一直在与这行代码作斗争。我正在从服务器获取 JSON 提要,我的问题是,有十分之一的 tokenData 返回 0 而不是 Dictionary我不知道为什么。当它以0 返回时,它也被编译器视为布尔值(也不知道为什么),我收到错误-[NSCFBoolean objectForKey:]: unrecognized selector sent to instance 0x81aa20
我试过做这样的事情
if(!tokenData)
{
NSLog(@"This is going to crash");
} 但是当tokenData 返回0 时,if 不会被调用。
esponseDict JSON 我得到:
{ code = 200; data = {
multipass = {
CardPhoneBarcodeToken = 562431;
CardPhoneToken = 23221;
errorMessage = "";
operationResult = 0;
};
};
}
这是崩溃前的样子:{ code = 200; data = { multipass = 0; }; }
更新:如果tokenData 不是NSDictionary,我已经设法采取措施,现在我面临else 部分的另一个问题。如果 tokenData 不是 NSDictionary ,我该如何重新加载?我尝试调用 *tokenData = [[responseDict objectForKey:@"data"] objectForKey:@"multipass"];在 else 里面,但我不断得到 tokenData = 0
谢谢
【问题讨论】:
-
能否请您 psot json 或请您 NSLog 响应字典
-
multipass对象也是字典吗?看来您正在从data字典中取出NSNumber。 -
这是崩溃前的样子:
{ code = 200; data = { multipass = 0; }; }
标签: ios objective-c xcode debugging