我有以下代码,它给出了代码后面的结果。由于某种原因,添加的对象有时会按应有的方式嵌入引号中,有时却不像下面的“Abtenauer”那样。谁能告诉我可能会发生什么?
相关代码:
EQBreedInfo *info = [[EQBreedInfo alloc] init];
for (int i = 0; i < [_breedlist count]; i++)
{
if(!dataArray)
{
dataArray = [[NSMutableArray alloc] init];
}
info = [_breedlist objectAtIndex:i]
[dataArray = addObject:info.breedName];
NSLog(@"breedName - %@",info.breedName);
NSLog(@"dataArray - %@",dataArray);
}
结果:
2014-03-18 14:23:51.397 EquineDiary[2343:a0b] breedName - 2014-03-18 14:23:51.397 EquineDiary[2343:a0b] dataArray - ( "" ) 2014-03-18 14:23:56.577 EquineDiary[2343:a0b] breedName - Abaco Barb 2014-03-18 14:23:56.577 EquineDiary[2343:a0b] dataArray - ( "", "Abaco Barb" ) 2014-03-18 14:24:07.333 EquineDiary[2343:a0b] breedName - Abtenauer 2014-03-18 14:24:07.334 EquineDiary[2343:a0b] dataArray - ( "", "Abaco Barb", Abtenauer ) 2014-03-18 14:25:13.695 EquineDiary[2343:a0b] breedName - Abyssinian horse 2014-03-18 14:25:13.695 EquineDiary[2343:a0b] dataArray - ( "", "Abaco Barb", Abtenauer, "Abyssinian horse" )
提前致谢
最佳答案
这里有几件事。
info = [_breedlist objectAtIndex:i]
末尾缺少一个分号。[dataArray = addObject:info.breedName];
有一个额外的等号卡在那里。- 您正在查看的是来自
dataArray
变量的description
,它在输出中添加了引号,只是为了让您清楚地了解其中实际包含的内容用于调试目的的数组。引号实际上不是存储的字符串的一部分。 - 在
for
循环中,使用NSUInteger
而不是int
。[_breedlist count]
将返回一个NSUInteger
,因此如果您与i
的比较是比较相同类型的两个变量,则最好。<
另一件要改变的事情是分配初始数组的方式。
把这段代码移到for循环之前:
if (!dataArray) {
dataArray = [[NSMutableArray alloc] init];
}
您不需要在每次迭代时都检查它,您只是在无益地消耗周期。
关于ios - 谁能告诉我为什么 addObject 给出不稳定的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22470004/