iOS 应用崩溃 -[NSCFString count] : when trying to get count of NSMutableArray if count is only 1

标签 ios arrays count nsmutablearray nsarray

我会保持简短和亲切,因为我确信我缺少的是一些简单的东西。我正在尝试获取一个 NSMutableArray 的计数,它可以包含可变数量的对象(id 号)。数组是从 JSon 数据创建的,数组本身是完美创建的,无论是单个对象还是一千个对象。

关于获取计数,如果数组包含 1 个以上的对象,则一切正常 & 花花公子 & 计数成功返回。但是,如果数组只有一个对象/ID 号......应用程序崩溃并显示 -[NSCFString count]: 错误。

这是我使用的代码:

[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"]];

关于iOS 应用崩溃 -[NSCFString count] : when trying to get count of NSMutableArray if count is only 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12876238/

相关文章:

sql - 是否可以仅对列值的第一个实例进行 sql count() 操作?

arrays - Elasticsearch:设置字段中数组元素的数量

ios - 如何在 RestKit 中映射动态响应?

ios - Swift - 导入 Objective-C 给出 "Unknown type name"

java - 帮助理解java算法使用arraycopy去除重复元素

Javascript 数组按多条件排序

Python - 如何获取文本文件中的行数

使用 SOAP 的 IOS Swift 调用 Web 服务

ios - 如何在 tableview 中重用动态原型(prototype)单元格

javascript - 测试对象数组中的值