NSArray

1.NSArray的遍歷

(1)常規(guī)遍歷
    NSArray *arr = @[@"lnj", @"lmj", @"jjj"];
    for (int i = 0; i < arr.count; ++i) {
        NSLog(@"arr[%i] = %@", i, arr[i]);
    }
(2)快速遍歷
    // 如果是OC數(shù)組可以使用OC中的增強(qiáng)for循環(huán)來(lái)遍歷
    // 逐個(gè)取出arr中的元素, 將取出的元素賦值給obj
    // 注意: obj的類(lèi)型可以根據(jù)數(shù)組中元素的類(lèi)型來(lái)寫(xiě), 不一定要寫(xiě)NSObject
    for (NSString *obj in arr) {
        NSLog(@"obj = %@", obj);
    }
(3) 使用OC數(shù)組的迭代器來(lái)遍歷
    // 使用OC數(shù)組的迭代器來(lái)遍歷
    // 每取出一個(gè)元素就會(huì)調(diào)用一次block
    // 每次調(diào)用block都會(huì)將當(dāng)前取出的元素和元素對(duì)應(yīng)的索引傳遞給我們
    // obj就是當(dāng)前取出的元素, idx就是當(dāng)前元素對(duì)應(yīng)的索引
    // stop用于控制什么時(shí)候停止遍歷
    [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        if (idx == 1) {
            *stop = YES;
        }
        NSLog(@"obj = %@, idx = %lu", obj, idx);
    }];

(4) 數(shù)組中的元素執(zhí)行方法
 /*
    [arr enumerateObjectsUsingBlock:^(Person *obj, NSUInteger idx, BOOL *stop) {
        [obj say];
    }];
    */
    
    // 如果使用OC數(shù)組存儲(chǔ)對(duì)象, 可以調(diào)用OC數(shù)組的方法讓數(shù)組中所有的元素都執(zhí)行指定的方法
    // 注意點(diǎn): 如果數(shù)組中保存的不是相同類(lèi)型的數(shù)據(jù), 并且沒(méi)有相同的方法, 那么會(huì)報(bào)錯(cuò)
    // [arr makeObjectsPerformSelector:@selector(say)];
    
    // withObject: 需要傳遞給調(diào)用方法的參數(shù)
    [arr makeObjectsPerformSelector:@selector(sayWithName:) withObject:@"lnj"];

2.NSArray的排序

(1)通過(guò)compare排序
    NSArray *arr = @[@10, @20, @5, @7, @15];
    NSLog(@"排序前: %@", arr);
    // 注意: 想使用compare方法對(duì)數(shù)組中的元素進(jìn)行排序, 那么數(shù)組中的元素必須是Foundation框架中的對(duì)象, 也就是說(shuō)不能是自定義對(duì)象
    NSArray *newArr = [arr sortedArrayUsingSelector:@selector(compare:)];
    NSLog(@"排序后: %@", newArr);
(2)排序自定義對(duì)象
    Person *p1 = [Person new];
    p1.age = 10;
    
    Person *p2 = [Person new];
    p2.age = 20;
    
    Person *p3 = [Person new];
    p3.age = 5;
    
    Person *p4 = [Person new];
    p4.age = 7;
    
    NSArray *arr = @[p1, p2, p3, p4];
    NSLog(@"排序前: %@", arr);
    // 按照人的年齡進(jìn)行排序
    // 不能使用compare:方法對(duì)自定義對(duì)象進(jìn)行排序
    //   NSArray *newArr = [arr sortedArrayUsingSelector:@selector(compare:)];
    
    // 該方法默認(rèn)會(huì)按照升序排序
    NSArray *newArr = [arr sortedArrayWithOptions:NSSortStable 
       usingComparator:^NSComparisonResult(Person *obj1, Person *obj2) {
        // 每次調(diào)用該block都會(huì)取出數(shù)組中的兩個(gè)元素給我們

        return obj1.age > obj2.age;
        /*
        if (obj1.age > obj2.age) {
            // 5 4
            return NSOrderedDescending;
        }else if(obj1.age < obj2.age)
        {
            // 4 5
            return NSOrderedAscending;
        }else
        {
            return NSOrderedSame;
        }
         */
    }];
    NSLog(@"排序后: %@", newArr);

3.NSArray和NSString之間互換

(1)遍歷拼接
   // 1.定義一個(gè)可變字符串保存拼接之后的結(jié)果
    NSMutableString *strM = [NSMutableString string];
    // 2.遍歷數(shù)組, 取出數(shù)組中的每一個(gè)元素, 將元素添加到可變字符串中
    for (NSString *str in arr) {
        [strM appendString:str];
        // 3.每次添加完畢之后再添加一個(gè)-
        [strM appendString:@"-"];
    }
    [strM deleteCharactersInRange:NSMakeRange(strM.length - 1, 1)];
    NSLog(@"strM = %@", strM);
(2)OC自帶方法
    //將array數(shù)組轉(zhuǎn)換為string字符串
    NSString *str = [arr componentsJoinedByString:@"**"];
    NSLog(@"str = %@", str);


    // 通過(guò)一個(gè)字符串生成一個(gè)數(shù)組
    // 也叫做字符串切割
    NSString *str = @"lnj**lmj**jjj";
    NSArray *arr = [str componentsSeparatedByString:@"**"];
    NSLog(@"arr = %@", arr);

4.NSArray文件讀寫(xiě)

(1) 將數(shù)組寫(xiě)入到文件中
    NSArray *arr = @[@"lnj", @"lmj", @"jjj"];
    // 其實(shí)如果將一個(gè)數(shù)組寫(xiě)入到文件中之后, 本質(zhì)是寫(xiě)入了一個(gè)XML文件
    // 在iOS開(kāi)發(fā)中一般情況下我們會(huì)將XML文件的擴(kuò)展名保存為plist
    BOOL flag = [arr writeToFile:@"/Users/xiaomage/Desktop/abc.plist" atomically:YES];
    NSLog(@"flag = %i", flag);
    //     注意:writeToFile只能寫(xiě)入數(shù)組中保存的元素都是Foundation框架中的類(lèi)創(chuàng)建的對(duì)象, 如果保存的是自定義對(duì)象那么不能寫(xiě)入
(2) 從文件中讀取一個(gè)數(shù)組
 NSArray *newArray = [NSArray arrayWithContentsOfFile:@"/Users/xiaomage/Desktop/abc.plist"];
 NSLog(@"%@", newArray);

5.NSArray的創(chuàng)建

//    NSArray *arr = [[NSArray alloc] init];
//    NSArray *arr = [NSArray arrayWithObject:@"lnj"];
    // 數(shù)組中的nil是結(jié)束符
    NSArray *arr = [NSArray arrayWithObjects:@"lnj", @"lmj" ,@"jjj", @"cp", nil];


    NSLog(@"count = %lu", [arr count]);
    NSLog(@"last = %@", [arr lastObject]);
    NSLog(@"first = %@", [arr firstObject]);
    NSLog(@"arr[1] = %@", [arr objectAtIndex:1]);

if([arr containsObject:@"zs"])
    {
        NSLog(@"arr中包含zs");
    }else
    {
        NSLog(@"arr中不包含zs");
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盗尸,一起剝皮案震驚了整個(gè)濱河市主卫,隨后出現(xiàn)的幾起案子艺蝴,更是在濱河造成了極大的恐慌,老刑警劉巖敛苇,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異焕襟,居然都是意外死亡宜狐,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)岸啡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)原叮,“玉大人,你說(shuō)我怎么就攤上這事巡蘸》芰ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵悦荒,是天一觀的道長(zhǎng)唯欣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)搬味,這世上最難降的妖魔是什么境氢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任蟀拷,我火速辦了婚禮,結(jié)果婚禮上萍聊,老公的妹妹穿的比我還像新娘问芬。我一直安慰自己,他們只是感情好寿桨,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布此衅。 她就那樣靜靜地躺著,像睡著了一般牛隅。 火紅的嫁衣襯著肌膚如雪炕柔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天媒佣,我揣著相機(jī)與錄音匕累,去河邊找鬼。 笑死默伍,一個(gè)胖子當(dāng)著我的面吹牛欢嘿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播也糊,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼炼蹦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了狸剃?” 一聲冷哼從身側(cè)響起掐隐,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钞馁,沒(méi)想到半個(gè)月后虑省,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡僧凰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年探颈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片训措。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伪节,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绩鸣,到底是詐尸還是另有隱情怀大,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布呀闻,位于F島的核電站化借,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏总珠。R本人自食惡果不足惜屏鳍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一勘纯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钓瞭,春花似錦驳遵、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至鸭丛,卻和暖如春竞穷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鳞溉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工瘾带, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人熟菲。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓看政,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抄罕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子允蚣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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