6

当我从JSONphp 获取值时,我遇到了以下问题__NSCFBoolean isEqualToString

我的代码如下:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
        //convert to JSON
        for(id key in res) {
        id value = [res objectForKey:key];

        NSString *keyAsString = (NSString *)key;
        NSString *valueAsString = (NSString *)value;
        //NSCFBoolean
        /*if([value isKindOfClass:[NSNumber class]])
        {
            printf("Number");
        }
        else if([value isKindOfClass:[NSString class]])
        {
            printf("String --- \n");
            if([value isEqualToString:@"0"])
            {
                printf("Wrong \n");
            }
            else
            {
                printf("Right \n");
            }
        }*/
        NSLog(@"%@",[valueAsString class]);
        if([keyAsString isEqualToString:@"success"])
        {
            printf("Working \n");
        }
        else
        {
            printf("Not Working\n");
        }
        //Error is in below line
        if([valueAsString isEqualToString:@"0"])// strcmp([value objCType], @encode(BOOL)) == 1)
        {
            [self loginSuccess];
        }
        else if(strcmp([value objCType], @encode(BOOL)) == 0)
        {
            [self loginFailure];
        }
        NSLog(@"key: %@", keyAsString);
        NSLog(@"value: %@", valueAsString);
    }

} }

获取[__NSCFBoolean isEqualToString:]:发送到实例 0x1dc9964 的无法识别选择器的问题

从昨天开始在谷歌搜索这个问题,但还没有解决方案。现在,NSCFBoolean 在 iOS 6.0 中也不可用。那么我该怎么做才能从JSON字符串中检查“0”或“1”呢?请帮忙。

4

2 回答 2

19

value是一个 NSNumber 对象(__NSCFBoolean,因为 NSNumber 是一个类簇)而不是一个字符串!用于[value boolValue]确定是 0 还是 1。

投射对象不会改变它的类型!

于 2013-02-02T14:53:24.043 回答
0

这是可疑的部分:

if([keyAsString isEqualToString:@"success"] && [valueAsString isEqualToString:@"0"])
{
}

keyAsString、valueAsString(可能是这个)或两者都不是字符串对象。为什么?我们无法从您的代码中知道这一点,可能您的 JSON 数据有问题。请向我们展示更多代码。

编辑

试试这个 :

if([keyAsString isEqualToString:@"success"] && [valueAsString isEqualToNumber:@(NO)])
{
}
于 2013-02-02T14:39:47.393 回答