首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSIndexPath递增值

NSIndexPath递增值
EN

Stack Overflow用户
提问于 2009-08-26 00:04:24
回答 2查看 3.4K关注 0票数 3

我正在尝试使用XML文件的内容填充OutlineView。

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

0,0

0,1

0,2

以此类推。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-26 00:17:52

NSIndexPath不是可变的,所以每次都必须创建一个新的索引路径。最有效的方法可能是使用lengthgetIndexes:initWithIndexes:length:消息,再加上realloc函数来增大/缩小缓冲区。

不要忘记在将索引放入缓冲区之后,在allocking和init (WithIndexes:length:)新路径之前对旧的索引路径执行release操作,并在完成时对缓冲区执行free操作。(也不要忘记,realloc会为您释放旧的缓冲区,因此您只需要free最后一个缓冲区。)

票数 5
EN

Stack Overflow用户

发布于 2011-04-13 23:32:00

我支持@LolaRun --我们是可可宝贝,我们不想要realloc。所以,试着这样做:

代码语言:javascript
复制
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);
}

或者,您可能想要递增现有的indexPath (第一行使用上面示例中的newIndexes数组实例化一个indexPath ):

代码语言:javascript
复制
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的子节点,而第二个示例将创建兄弟节点。按你的喜好搭配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1331659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档