NSIndexSet 用法

NSIndexSet類代表一個(gè)不可變的獨(dú)特的無符號(hào)整數(shù)的集合,稱為索引,因?yàn)槭褂盟鼈兊姆绞健_@個(gè)集合被稱為索引集絮爷。你不應(yīng)該使用索引集存儲(chǔ)任意集合的整數(shù)值,因?yàn)樗饕此饕判蚍秶姆绞酱鎯?chǔ)的冤馏。這使得它們更有效率比存儲(chǔ)單個(gè)整數(shù)的集合涡匀。這也意味著每個(gè)索引值指數(shù)中只能出現(xiàn)一次目胡。通俗點(diǎn)講NSIndexSet就是一個(gè)唯一的脓规,有序的,無符號(hào)整數(shù)
的集合饿幅。

NSMutableIndexSet 是一個(gè)可變的集合,其使用方法如:

NSMutableIndexSet *idxSet = [[NSMutableIndexSet alloc] init];    
    [idxSet addIndex:5];
    [idxSet addIndex:2];
    [idxSet addIndex:8];
    [idxSet addIndex:12];
   //  添加 4到13的索引值
    [idxSet addIndexesInRange:NSMakeRange(4, 10)];

    [idxSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL*stop)     
    {
        NSLog(@"%lu", (unsigned long)idx);   
    }];

打印結(jié)果:

**2013-11-29 11:34:52.328 Tabels[862:a0b] 2**
**2013-11-29 11:34:52.328 Tables[862:a0b] 4**
**2013-11-29 11:34:52.328 Tables[862:a0b] 5**
**2013-11-29 11:34:52.329 Tables[862:a0b] 6**
**2013-11-29 11:34:52.329 Tables[862:a0b] 7**
**2013-11-29 11:34:52.330 Tables[862:a0b] 8**
**2013-11-29 11:34:52.330 Tables[862:a0b] 9**
**2013-11-29 11:34:52.330 Tables[862:a0b] 10**
**2013-11-29 11:34:52.331 Tables[862:a0b] 11**
**2013-11-29 11:34:52.331 Tables[862:a0b] 12**

**2013-11-29 11:34:52.332 Tables[862:a0b] 13**
****

NSIndexSet 同時(shí)還包含許多方法判斷是否包含某區(qū)間或者從一個(gè)索引值內(nèi)獲取臨近的區(qū)間內(nèi)的索引戒职。如下代碼:

 NSUInteger a = [idxSet indexGreaterThanIndex:5];
 NSUInteger b = [idxSet indexLessThanIndex:5];
 NSUInteger c = [idxSet indexGreaterThanOrEqualToIndex:5];
 NSUInteger d = [idxSet indexLessThanOrEqualToIndex:5];    

 NSLog(@"a = %lu, b = %lu, c = %lu, d = %lu", (unsigned long)a,(unsigned long)b,(unsigned long)c,(unsigned long)d);

結(jié)果:
2013-11-29 15:42:23.053 Tables[1165:a0b] a = 6, b = 4, c = 5, d = 5

NSIndexSet 還取一個(gè) NSRange 范圍中的交集栗恩,然后還可以以相反的順序進(jìn)行枚舉。

這個(gè)需求需要使用NSIndexSetenumerateIndexesInRange:options:usingBlock:方法洪燥,如下代碼

[idxSet enumerateIndexesInRange:NSMakeRange(4, 4)options:NSEnumerationReverse usingBlock:^(NSUInteger idx, BOOL*stop) {
         NSLog(@"%lu", (unsigned long)idx);

    }]

結(jié)果是:

**2013-11-29 15:49:38.413 Tables[1187:a0b] 7**
**2013-11-29 15:49:38.414 Tables[1187:a0b] 6**
**2013-11-29 15:49:38.414 Tables[1187:a0b] 5**
**2013-11-29 15:49:38.415 Tables[1187:a0b] 4**

由于idxSet的本身的區(qū)間是2磕秤,4 -13,NSMakeRange(4, 4)的區(qū)間是4 - 7捧韵,取交集就是4-7市咆,然后反序就是7,6再来,5蒙兰,4.

通過NSIndexSet獲取數(shù)組

    NSMutableIndexSet *idxSet1 = [[NSMutableIndexSet alloc] init];
    [idxSet1 addIndex:1];
    [idxSet1 addIndexesInRange:NSMakeRange(3, 3)];
    [idxSet1 addIndexesInRange:NSMakeRange(7, 2)];
    NSArray *array =@[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];
    NSArray *result = [array objectsAtIndexes:idxSet1];
    [result enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,BOOL *stop) {
        NSLog(@"%@",obj);
    }];

結(jié)果是:

**2013-11-29 15:59:03.961 Tables[1209:a0b] 1**
**2013-11-29 15:59:03.961 Tables[1209:a0b] 3**
**2013-11-29 15:59:03.961 Tables[1209:a0b] 4**
**2013-11-29 15:59:03.962 Tables[1209:a0b] 5**
**2013-11-29 15:59:03.962 Tables[1209:a0b] 7**
**2013-11-29 15:59:03.963 Tables[1209:a0b] 8**
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市芒篷,隨后出現(xiàn)的幾起案子搜变,更是在濱河造成了極大的恐慌,老刑警劉巖针炉,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挠他,死亡現(xiàn)場離奇詭異,居然都是意外死亡篡帕,警方通過查閱死者的電腦和手機(jī)殖侵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镰烧,“玉大人拢军,你說我怎么就攤上這事“枳蹋” “怎么了朴沿?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我赌渣,道長魏铅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任坚芜,我火速辦了婚禮览芳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸿竖。我一直安慰自己沧竟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布缚忧。 她就那樣靜靜地躺著悟泵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闪水。 梳的紋絲不亂的頭發(fā)上糕非,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音球榆,去河邊找鬼朽肥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛持钉,可吹牛的內(nèi)容都是我干的衡招。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼每强,長吁一口氣:“原來是場噩夢啊……” “哼始腾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舀射,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤窘茁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后脆烟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體山林,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年邢羔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驼抹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拜鹤,死狀恐怖框冀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情敏簿,我是刑警寧澤明也,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布宣虾,位于F島的核電站,受9級(jí)特大地震影響温数,放射性物質(zhì)發(fā)生泄漏绣硝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一撑刺、第九天 我趴在偏房一處隱蔽的房頂上張望鹉胖。 院中可真熱鬧,春花似錦够傍、人聲如沸甫菠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寂诱。三九已至,卻和暖如春安聘,著一層夾襖步出監(jiān)牢的瞬間刹衫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工搞挣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人音羞。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓囱桨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嗅绰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舍肠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法窘面,內(nèi)部類的語法翠语,繼承相關(guān)的語法,異常的語法财边,線程的語...
    子非魚_t_閱讀 31,664評(píng)論 18 399
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 11,005評(píng)論 6 13
  • 卷首語 歡迎來到 objc.io 第七期肌括! 這個(gè)月,我們選擇了 Foundation 框架作為我們的主題酣难。 Fou...
    評(píng)評(píng)分分閱讀 1,540評(píng)論 0 8
  • 你在遠(yuǎn)方聆聽我谍夭,我的聲音卻無法達(dá)到你『┠迹——題記 夏日的夜總是帶著魅惑紧索,涼爽的晚風(fēng)撩起衣角,風(fēng)情萬種得開始展示它的吸...
    蝦子面魔閱讀 382評(píng)論 1 1
  • 親愛的孩子菜谣,今天你給媽媽上了一課。我?guī)闳コ匈徺I春游物品豌习,回來路上前鋒小街吃飯溢谤,你要買自己最喜歡的鐵板鵪鶉蛋,為...
    Grit888閱讀 215評(píng)論 6 4