代码之家  ›  专栏  ›  技术社区  ›  gcstr

NSIndexPath递增值

  •  3
  • gcstr  · 技术社区  · 15 年前

    我想在cocoa解析文档时创建和管理NSIndexPath中的值。 NSIndexPath有添加和删除索引的方法,但我需要增加/减少每个索引中的值:

    [0, 0]
    [0, 1]

    等等

    我该怎么做?

    2 回复  |  直到 15 年前
        1
  •  5
  •   Peter Hosey    15 年前

    length , getIndexes: initWithIndexes:length: realloc 函数以增大/缩小缓冲区。

    别忘了 release 将其索引放入缓冲区之后和之前的旧索引路径 alloc 国王和 init ( WithIndexes:length: )新的,和 free 完成后,缓冲区将被删除。(也别忘了 realloc 为您释放旧的缓冲区,因此您只需要 自由的 最后一个缓冲区。)

        2
  •  0
  •   Elise van Looij    14 年前

    NSUInteger newIndexes[] = {0,1};
    NSUInteger len = sizeof(newIndexes)/sizeof(NSUInteger); //sorry!
    NSIndexPath *baseIndexPath = [NSIndexPath indexPathWithIndexes:newIndexes 
                                                            length:len];
    NSUInteger i;
    for (i=0; i<10; i++) {
        NSIndexPath *newIndexPath = [baseIndexPath indexPathByAddingIndex:i];
        NSLog(@"newIndexPath = %@", newIndexPath);
    }
    

    NSIndexPath *someIndexPath = [NSIndexPath indexPathWithIndexes:newIndexes 
                                                            length:len];
        NSUInteger newIndexes2[[someIndexPath length]];
        [someIndexPath getIndexes:newIndexes2];
    
        NSUInteger len2 = sizeof(newIndexes2)/sizeof(NSUInteger);
        NSIndexPath *baseIndexPath2 = [NSIndexPath indexPathWithIndexes:newIndexes2 
                                                                 length:len2];
        NSUInteger ii;
        NSInteger start = [someIndexPath indexAtPosition:[someIndexPath length] -1];
        for (ii=start; ii<10; ii++) {
            NSIndexPath *newIndexPath2 = [baseIndexPath2 indexPathByAddingIndex:ii];
            NSLog(@"newIndexPath2 = %@", newIndexPath2);
        }
    

    请注意,第一个示例将创建原始路径0.1的子级,而第二个示例将创建同级。随意搭配。