gpt4 book ai didi

ios - NSDictionary 被视为 bool 值 - 无法调试

转载 作者:行者123 更新时间:2023-12-01 18:25:23 25 4
gpt4 key购买 nike

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它也被编译器视为 bool 值(也不知道为什么),我收到错误 -[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
谢谢

最佳答案

我会检查 tokenDataNSDictionary在解析它之前。

-(void)loadData
{
NSDictionary *tokenData = [[responseDict objectForKey:@"data"] objectForKey:@"multipass"];
dispatch_async(dispatch_get_main_queue(), ^{
NSString *cardPhoneToken = @"";
if( [tokenData isKindOfClass:[NSDictionary class]] ){
retryCount = 0;
cardPhoneToken = [tokenData objectForKey:@"CardPhoneToken"];
} else {
NSLog(@"failed to load data, retrying...");
retryCount++;
if( retryCount < 5 ){
[self loadData];
return;
} else {
NSLog(@"failed after 5 retries");
}

}
NSString *card = [NSString stringWithFormat:@"%@-%@",
[[UserAccount sharedInstance] cardNumber],
cardPhoneToken];

});
}

关于ios - NSDictionary 被视为 bool 值 - 无法调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14230881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com