当我从JSON
php获取值时,我就会遇到__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中使用。那我该怎么做才能检查" 0"或" 1"来自JSON
字符串?请帮忙。
答案 0 :(得分:19)
value
是一个NSNumber对象(__ NSCFBoolean,因为NSNumber是一个类集群),而不是一个字符串!使用[value boolValue]
确定它是0还是1.
投射对象不会改变它的类型!
答案 1 :(得分:0)
这是可疑的部分:
if([keyAsString isEqualToString:@"success"] && [valueAsString isEqualToString:@"0"])
{
}
keyAsString,valueAsString(可能是这一个)或两者都不是字符串对象。为什么?我们无法从您的代码中了解这一点,可能您的JSON数据有问题。请告诉我们更多代码。
编辑
试试这个:
if([keyAsString isEqualToString:@"success"] && [valueAsString isEqualToNumber:@(NO)])
{
}