任何人都可以告诉我为什么addObject会给出不稳定的结果?

时间:2014-03-18 03:49:20

标签: ios ios7 tableview

我有以下代码,它给出了代码后面的结果。由于某种原因,添加的对象有时会嵌入到引号中,有时它不像下面的“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"
)

提前感谢你

3 个答案:

答案 0 :(得分:2)

如果字符串的字符或空字符串之间有空格,则添加到数组的字符串始终具有引号。 它仅仅是在控制台中打印时显示完整字符串的表示。

使用objectAtIndex:检索对象并传递给其他方法执行必要操作时,引号将不存在

答案 1 :(得分:2)

这里有一些事情。

  1. info = [_breedlist objectAtIndex:i]最后缺少一个分号。
  2. [dataArray = addObject:info.breedName];在那里有一个额外的等号。
  3. 您正在查看的是description变量中的dataArray,它会在输出中添加引号,以便清楚地了解数组中实际包含的内容以进行调试。引号实际上不是存储的字符串的一部分。
  4. for循环中,使用NSUInteger经文int[_breedlist count]将返回NSUInteger,因此最好与i进行比较,比较两个相同类型的变量。
  5. 要改变的另一件事是你分配初始数组的方式。

    将此部分代码移至for循环之前:

    if (!dataArray) {
        dataArray = [[NSMutableArray alloc] init];
    }
    

    你不需要在每次迭代时检查它,你只是在没有任何好处的情况下燃烧循环。

答案 2 :(得分:1)

我可以告诉你,你要做的第一件事就是从这里删除=

[dataArray = addObject:info.breedName];