NSIndexSetの扱い

NSIndexSetの扱い方がよく分からなかったので調べた。 よそのサイトにあったサンプルでは終了条件にNSNotFoundを使っていたが、 それでは上手くいかず・・・ いろいろと試行錯誤した結果、kCFNotFoundで上手くいった。 これで上手くいく理由を引き続き調べる。

// indexSetに値を代入
- (NSIndexSet*) createIndexSet{
    NSMutableIndexSet *indexes = [NSMutableIndexSet indexSet];
    [indexes addIndex:1];
    [indexes addIndex:2];
    [indexes addIndex:3];
    return indexes; 
} 

// indexSetの値を取り出し
- (NSArray*) indexSet2Array: (NSIndexSet*) set{
    NSMutableArray *returnArray = [[NSMutableArray alloc] initWithCapacity: 0];
    int index = [set firstIndex]; 

    while(index != kCFNotFound){
        [returnArray addObject: [NSNumber numberWithInt: index]];
        index = [set indexGreaterThanIndex:index];
    }
}
Written on April 25, 2011