ref_id对象是JSON响应中的字符串/数字。 相同的代码大部分时间都有效。但有时它会崩溃(〜不到5%)。
NSDictionary *udfDict = nil;
if (data) {
if ([data length] > 0) {
udfDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&serializationError];
}
}
if (udfDict) {
NSString *transactionreason;
NSString *refId;
if (![CustomUtilities isEmptyOrNull:udfDict[@"ref_id"]]) {
refId = udfDict[@"ref_id"];
[dict setObject:refId forKey:@"ref_id"];
}
关注:如果它无法从数字转换为字符串,代码应该一直打破。但事实并非如此。崩溃是间歇性的,只有代码中断了约5%。
答案 0 :(得分:0)
测试是否数据!= nil是不必要的。但是你自己和你的代码的读者一个忙,写if if(data!= nil)而不是if(data)。这是野蛮的。对于udfDict也是如此。 length是一个属性,所以data.length不是[data length]。你为什么要读可变容器?这是您复制并且不了解的一些代码吗?
如果JSON数据是一个数组,您的代码将崩溃。
我们不知道isEmptyOrNull的作用。
为什么setObject而不是dict [@" ref_id"] = ...?
我在这里看不到任何数字。实际问题是什么?