【问题标题】:indexSetWithIndexesInRange is not doing what expectedindexSetWithIndexesInRange 没有达到预期的效果
【发布时间】:2010-10-25 20:18:52
【问题描述】:

我想从数组中选择一些对象。因此,我正在使用我选择的开始和结束索引。

NSLog(@"start:%d\nend:%d", startIndex, endIndex);
NSIndexSet *myIndexes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(startIndex, endIndex)];
NSLog(@"%d", [myIndexes lastIndex]);

第一个 NSLog 给了我

开始索引:49
endIndex:67

第二个 NSLog 给了我

115

为什么我的最高数字是 115?应该是 67。当然应用程序崩溃了:

由于未捕获的异常“NSRangeException”而终止应用,原因:“* -[NSArray objectsAtIndexes:]: index 115 beyond bounds [0 .. 96]”

我做错了什么?

【问题讨论】:

    标签: iphone objective-c cocoa-touch nsindexset nsrange


    【解决方案1】:

    NSRange 的成员是 locationlength,而不是 startend。这意味着您需要像这样创建 NSRange 结构:

    NSMakeRange(startIndex, endIndex - startIndex);
    

    【讨论】:

    • 这为我节省了大量时间和精力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2016-01-12
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多