iOS应用程序崩溃-[NSCFString count]:尝试获取NSMutableArray计数时,如果计数仅为1
我会尽量简短,因为我确信我遗漏了一些简单的东西。我正在尝试获取NSMutableArray的计数,该数组可以包含数量可变的对象(id号)。数组是从JSon数据创建的&数组本身是完美创建的,无论是单个对象还是1000个对象 关于获取计数,如果数组包含多个对象,则一切正常&dandy&count将成功返回。但是,如果数组只有一个对象/id号。。。应用程序崩溃,出现-[NSCFString count]:错误 以下是我正在使用的代码:iOS应用程序崩溃-[NSCFString count]:尝试获取NSMutableArray计数时,如果计数仅为1,ios,arrays,count,nsmutablearray,nsarray,Ios,Arrays,Count,Nsmutablearray,Nsarray,我会尽量简短,因为我确信我遗漏了一些简单的东西。我正在尝试获取NSMutableArray的计数,该数组可以包含数量可变的对象(id号)。数组是从JSon数据创建的&数组本身是完美创建的,无论是单个对象还是1000个对象 关于获取计数,如果数组包含多个对象,则一切正常&dandy&count将成功返回。但是,如果数组只有一个对象/id号。。。应用程序崩溃,出现-[NSCFString count]:错误 以下是我正在使用的代码: [request setCompletionBlock:^(voi
[request setCompletionBlock:^(void)
{
NSString *responseCurrent = [request responseString];
NSMutableArray *json = [responseCurrent JSONValue];
NSMutableArray *currentList = [[json valueForKeyPath:@"groupTO"] valueForKeyPath:@"currentList"];
NSMutableArray *idNumArr = [[NSMutableArray alloc]init];
idNumArr = [currentList valueForKey:@"idNumber"];
debug(@"THIS IS ID ARRAY: %@",idNumArr);
debug(@"THIS IS COUNT OF THE ID ARRAY: %@",[idNumArr count]);
// Ive also tried this to get the count, with no variation in results
// int countOfidNums = [idNumArr count];
// debug(@"count of arr: %d",countOfidNums);
我需要获得此计数以实现条件,以处理此数组仅包含单个对象时出现的其他问题
我假设问题的根源是数组中的对象是字符串,当存在单个对象时,它只是一个字符串,没有分隔逗号???大概救命啊
另外:不确定它是否有区别,但我使用的是ARC。这里的问题是,当你到达那一行时,
idNumArr
不是数组,而是字符串。如果您不相信我,请在这之前打印出[idNumArr class]
,或者使用调试器
NSMutableArray *idNumArr = [[NSMutableArray alloc]init];
idNumArr = [currentList valueForKey:@"idNumber"];
[currentList valueForKey:@“idNumber”]
显然正在返回一个字符串(并且没有理由在该赋值之前立即分配数组。您可能需要:
NSMutableArray *idNumArr = [[NSMutableArray alloc]init];
[idNumArr addObject:[currentList valueForKey:@"idNumber"]];
在这一行中,currentList返回一个NSString,而“count”不是NSString中的一个方法(您可以在这里检查:
请记住,这里您使用的是指针,“键的值”返回一个id指针(没有关联的类型)。因此,您必须检查“valueForKey”返回的对象是否实际上是NSArray
if([idNumArr isKindOfClass:[NSMutableArray class]])
//Then you can use "count"
请:考虑到上面的代码没有经过测试,甚至没有经过语法检查。但是搜索该方法“isKindOfClass”来检查您在idNumArr中使用的对象类型。问题似乎是idNumArr实际上是一个字符串而不是数组。添加这样的日志,看看它能给您带来什么:
idNumArr = [currentList valueForKey:@"idNumber"];
NSLog(@"%@", idNumArr class]);
一个数组中只有一个字符串这一事实不应该导致这个问题。这修复了崩溃,并为我提供了正确的计数,如果只向数组中添加了一个对象,也可以正常工作……但是如果idNumArr中json数据存储了多个id号,它会在arr中创建多个对象,每个对象都包含在g所有的id号。例如:2个id应该存储在数组中…应该是(12349876),计数为2。但是现在数组是(12349876),(12349876),计数为2
idNumArr = [currentList valueForKey:@"idNumber"];
NSLog(@"%@", idNumArr class]);