向数组添加连续的单词会导致错误

时间:2014-03-21 00:46:15

标签: ios ios7

我正在尝试创建一个值数组,在打印时,它们将如下所示:

    {
    headerTitle = "#";
    rowValues =         (
        ""
    );
    }        {
     headerTitle = A;
     rowValues =          (
        "Abaco Barb",
        Abenauer,
        "Australian Stockhorse",
    );
    }         {
      headerTitle = B;
         etc…

程序失败,并在下面的语句中出现"doesNotRecognizeSelector:"错误。

数组定义为:

NSMutableArray *words = [[NSMutableArray alloc]init];

相关代码:

    else
    {
     letterString = [[dataArray objectAtIndex:i] substringToIndex:1];
     NSLog(@"lastLetter = %@",lastLetter);
     NSLog(@"letterString = %@",letterString);

      if ([lastLetter isEqualToString: letterString])
       {
           NSLog(@"before words, dataArray %@", [dataArray objectAtIndex:i]);

           //(FAILS on the next instruction on adding [dataArray objectAtIndex:i] =    
          // Abenauer)

           [words addObject:[dataArray objectAtIndex:i]];   
                        NSLog(@"words - %@",words);
           NSLog(@"after words");
       }
       else
       {
        NSMutableDictionary *row = [[NSMutableDictionary alloc] init];
        [row setValue:lastLetter forKey: @"headerTitle"];
        [row setValue: words forKey:@"rowValues"];
        [content addObject:row];
         NSLog(@"content - %@",content);
        lastLetter = letterString;
        words =[dataArray objectAtIndex:i];
                        NSLog(@"words - %@",words);
        }
     }

失败前创建的OUTPUT:

   2014-03-21 11:37:42.967 EquineDiary[1864:a0b] lastLetter = #
   2014-03-21 11:37:42.967 EquineDiary[1864:a0b] letterString = A
   2014-03-21 11:37:42.968 EquineDiary[1864:a0b] content - (
    {
    headerTitle = "#";
    rowValues =         (
    );
    }
    )
   2014-03-21 11:37:54.434 EquineDiary[1864:a0b] words - Abaco Barb
   2014-03-21 11:37:54.435 EquineDiary[1864:a0b] lastLetter = A
   2014-03-21 11:37:54.436 EquineDiary[1864:a0b] letterString = A
   2014-03-21 11:37:54.436 EquineDiary[1864:a0b] before words, dataArray Abtenauer

提前感谢您的帮助。

注1: 整个错误是" CoreFoundation`- [NSObject(NSObject)doesNotRecognizeSelector:]:"单词在Method的开头定义,在for循环之外。 " Abaco Barb"当我试图添加" Abtenauer"在[dataArray objectAtIndex:i]。

我所要做的就是把所有以" A"进入一个数组(单词),直到该单词不再以A开头,此时我将单词数组写入一行,其中键为#34;行值"。 A使用键"标题标题"。

写入该行

注2:

我发现了这个问题,但不知道如何修复它。在我将数据写入行之后,我得到了代码" words = [dataArray objectAtIndex:i];"为了擦除先前的值(即" A"值),我可以开始添加以下一个字母开头的单词(即" B")。在我这样做之后,它不喜欢在文字中添加对象。为什么是这样?什么是擦除值重新开始的最佳方法?

2 个答案:

答案 0 :(得分:0)

看起来Abenauer不是一个字符串。它周围没有引号。

答案 1 :(得分:0)

如果你想要一个新阵列,只需创建一个新阵列。

words = [[NSMutableArray alloc] init]