比较iOS7.1上断开的JSON数据
我在app Store上有一个现有的应用程序,它突然出现了一些与iOS7.1更新相关的问题。这是一个我不能左右我的头,但它看起来似乎应该(和它曾经)的工作。我试图检查JSON字符串的“Success”键是否等于“1”比较iOS7.1上断开的JSON数据,ios,objective-c,json,nsnumber,ios7.1,Ios,Objective C,Json,Nsnumber,Ios7.1,我在app Store上有一个现有的应用程序,它突然出现了一些与iOS7.1更新相关的问题。这是一个我不能左右我的头,但它看起来似乎应该(和它曾经)的工作。我试图检查JSON字符串的“Success”键是否等于“1” AFJSONRequestOperation *op = [AFJSONRequestOperation JSONRequestOperationWithRequest:req success:^(NSURLRequest *request, NSHTTPURLResponse *
AFJSONRequestOperation *op = [AFJSONRequestOperation JSONRequestOperationWithRequest:req success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
[[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
if ([[JSON objectForKey:@"Success"] isEqualToValue:[NSNumber numberWithInt:1]]) {
// succeeded
NSLog(@"Reached success while submitting");
} else {
NSLog(@"JSON: %@", [JSON objectForKey:@"Success"]);
// Success was not 0
}
}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
// parse/download error
}];
即使成功键为1,程序也始终到达else
语句。以下是JSON对象的调试打印:
Printing description of JSON:
{
EntryId = 5235;
EntryLink = "https://cpdme.wufoo.com/api/v3/forms/z7x4a9/entries.json?Filter1=EntryId+Is_equal_to+5235";
Success = 1;
}
考虑将代码更改为:
NSNumber *statusValue = [JSON objectForKey:@"Success"];
if ([statusValue boolValue]) {
...
因为这对于正确识别真相有着更广阔的范围。它还将悄悄地处理作为字符串实例的值
我猜您当前的代码在比较过程中遇到了类类型不匹配的问题。记录
[JSON objectForKey:@“Success”]
和[NSNumber numberWithInt:1]
的类和内容以验证结果。请打印解析的实际数据。可能是服务器正在发送EntryId和Success的字符串;不幸的是,当您打印解析后的词典时,您无法看到这一点。或者检查[[JSON objectForKey:@“Success”是KindofClass:[NSNumber class]]还是[NSString class]。打印的描述肯定会显示这一点吗?如果它们是字符串,则会像EntryLink
那样用双引号括起来?请参阅@Wain答案上的注释-两个类的类型相同(NSNumber
)不需要引号的字符串周围不会有引号。嗨,Wain,这些类的输出是:JSON成功密钥类:\uuuu NSCFNumber
数字类:\uuu NSCFNumber
看起来很合理。编辑代码会得到正确的结果吗?只是尝试了一下-是的,谢谢!疯狂的是它只在iOS7.1中更改了,没有必要键入cast(NSNumber*)[JSON objectForKey:@“Success”]
@hypercrypt,没错,并没有真正考虑到这一点,只是在将代码直接输入浏览器时犯了一个谨慎的错误。。。