【问题标题】:objects in array no index position数组中的对象没有索引位置
【发布时间】:2014-01-04 20:22:19
【问题描述】:

我有一个数组,它是一个解析的 xml 提要,我想使用代码将它添加到另一个数组中......

int insertIdx = [blogEntries count];

for (RSSItem *nextItem in feedItems) {          

    [blogEntries insertObject:nextItem atIndex:insertIdx];               

    //[blogEntries addObject:nextItem];

insertIdx += 1;

}

由于某种原因,blogEntries 数组中的所有对象的索引都为 0,当我使用 ...

for (RSSItem *nextItem in blogEntries)

    NSLog(@"title - %@, pos - %i", nextItem.title, [blogEntries IndexOfObject:nextItem]);

您知道为什么索引可能不会更新吗?

任何帮助将不胜感激

【问题讨论】:

  • 有多少个blogEntries?你为什么使用insertObject:atIndex: 而不是addObject:?您实际上是在使用indexOfObject:,而不是您创建的名为IndexOfObject: 的方法吗?
  • 不要忽略编译器警告。 %i 格式很可能应该是 %ld,然后它应该显示正确的索引值。

标签: objective-c arrays nsmutablearray


【解决方案1】:

您是否尝试使用addObject: 而不是insertObject:atIndex

你确定对象不同吗:

indexOfObject: Returns the lowest index whose corresponding array value is equal to a given object.

【讨论】:

    【解决方案2】:

    关于一次将多个项目添加到 NSMutableArray 的主题,我无法克制自己,我更喜欢使用这种方法:

    - (void)addObjectsFromArray:(NSArray *)otherArray

    它删除了无用的for 循环。 (除非你需要在那个循环中做一些其他的工作)

    就您的问题而言,viperking 对您可能面临的问题有很大的暗示。 (如果是这种情况,您可能需要验证您的 isEqual: 方法。

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2020-07-22
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多