Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较iOS7.1上断开的JSON数据_Ios_Objective C_Json_Nsnumber_Ios7.1 - Fatal编程技术网

比较iOS7.1上断开的JSON数据

比较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 *

我在app Store上有一个现有的应用程序,它突然出现了一些与iOS7.1更新相关的问题。这是一个我不能左右我的头,但它看起来似乎应该(和它曾经)的工作。我试图检查JSON字符串的“Success”键是否等于“1”

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,没错,并没有真正考虑到这一点,只是在将代码直接输入浏览器时犯了一个谨慎的错误。。。