日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios数组基本用法和排序

發布時間:2025/7/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios数组基本用法和排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.創建數組

[objc] view plaincopy
  • //?創建一個空的數組??
  • NSArray?*array?=?[NSArray?array];??????
  • //?創建有1個元素的數組??
  • array?=?[NSArray?arrayWithObject:@"123"];??
  • //?創建有多個元素的數組??
  • array?=?[NSArray?arrayWithObjects:@"a",?@"b",?@"c",?nil?nil];??
  • NSArray?*array3?=?[array?arrayByAddingObjectsFromArray:[NSArray?arrayWithObjects:@"4",?@"5",?nil?nil]];??
  • ??
  • NSArray?*array4?=?[NSArray?arrayWithObjects:@"1",?@"2",?@"3",?@"4",?nil?nil];??
  • NSRange?range?=?NSMakeRange(1,?2);??
  • NSArray?*array5?=?[array4?subarrayWithRange:range];??

  • 2.數組的一些基本方法

    [objc] view plaincopy
  • int?count?=?[array?count];//個數??
  • //?判斷是否包含了某個元素??
  • if?([array?containsObject:@"a"])?{??
  • ????NSLog(@"包含了字符串a");??
  • }??
  • NSString?*last?=?[array?lastObject];最后一個元素??
  • NSString?*str?=?[array?objectAtIndex:1];根據索引獲取數組中的元素??
  • int?index?=?[array?indexOfObject:@"c"];獲取指定元素的索引??
  • //?讓數組里面的所有對象都調用test方法,123為參數??
  • NSArray?*array?=?[NSArray?arrayWithObjects:stu1,?stu2,?stu3,?nil?nil];??
  • [array?makeObjectsPerformSelector:@selector(test2:)?withObject:@"123"];??
  • NSArray?*array?=?[NSArray?arrayWithObjects:@"1",?@"2",?@"3",?@"4",?nil?nil];??
  • //?1-2-3-4??
  • //?利用分隔符-拼接所有的數組元素??
  • NSString?*str?=?[array?componentsJoinedByString:@"-"];??
  • //?將一個數組寫入文件(生成的是一個xml文件)??
  • NSString?*path?=?@"/Users/apple/Desktop/array.xml";??
  • [array?writeToFile:path?atomically:YES];??
  • path?=?@"/Users/apple/Desktop/array.txt";??
  • //?從文件中讀取數組內容(文件有嚴格的格式要求)??
  • NSArray?*array2?=?[NSArray?arrayWithContentsOfFile:path];??
  • 3.遍歷數組

    [objc] view plaincopy
  • #pragma?mark?遍歷數組1??
  • void?arrayFor1()?{??
  • ????NSArray?*array?=?[NSArray?arrayWithObjects:stu1,?@"1",?@"2",?@"3",?nil?nil];??
  • ????int?count?=?array.count;??
  • ????for?(int?i?=?0;?i<count;?i++)?{??
  • ????????id?obj?=?[array?objectAtIndex:i];??
  • ????}??
  • }??
  • ??
  • #pragma?mark?遍歷數組2?快速遍歷??
  • void?arrayFor2()?{??
  • ????Student?*stu1?=?[Student?student];??
  • ????NSArray?*array?=?[NSArray?arrayWithObjects:stu1,?@"1",?@"2",?@"3",?nil?nil];??
  • ????int?i?=0;??
  • ????for?(id?obj?in?array)?{??
  • ????????NSLog(@"%i-%@",?i,?obj);??
  • ????????i++;??
  • ????}??
  • }??
  • ??
  • #pragma?mark?遍歷數組3??
  • void?arrayFor3()?{??
  • ????Student?*stu1?=?[Student?student];??
  • ????NSArray?*array?=?[NSArray?arrayWithObjects:stu1,?@"1",?@"2",?@"3",?nil?nil];??
  • ????[array?enumerateObjectsUsingBlock:??
  • ?????^(id?obj,?NSUInteger?idx,?BOOLBOOL?*stop)?{??
  • ????????NSLog(@"%i-%@",?idx,?obj);??
  • ?????????//?如果索引為1,就停止遍歷??
  • ?????????if?(idx?==?1)?{??
  • ?????????????//?利用指針修改外面BOOL變量的值??
  • ?????????????*stop?=?YES;??
  • ?????????}??
  • ????}];??
  • }??
  • ??
  • #pragma?mark?遍歷數組4??
  • void?arrayFor4()?{??
  • ????Student?*stu1?=?[Student?student];??
  • ????NSArray?*array?=?[NSArray?arrayWithObjects:stu1,?@"1",?@"2",?@"3",?nil?nil];??
  • ????//?獲取數組的迭代器??
  • ????//?NSEnumerator?*enumerator?=?[array?objectEnumerator];??
  • ????//?反序迭代器(從尾部開始遍歷元素)??
  • ????NSEnumerator?*enumerator?=?[array?reverseObjectEnumerator];??
  • ????//?allObjects是取出沒有被遍歷過的對象??
  • ????NSArray?*array2?=?[enumerator?allObjects];??
  • ????NSLog(@"array2:%@",?array2);??
  • ????//?獲取下一個需要遍歷的元素??
  • ????id?obj?=?nil;??
  • ????while?(obj?=?[enumerator?nextObject])?{??
  • ????????NSLog(@"obj=%@",?obj);??
  • ????}??
  • }??


  • 4.數組排序

    [objc] view plaincopy
  • #pragma?mark?數組排序1??
  • void?arraySort1()?{??
  • ????NSArray?*array?=?[NSArray?arrayWithObjects:@"2",?@"3",?@"1",?@"4",?nil?nil];??
  • ??????
  • ????//?返回一個排好序的數組,原來數組的元素順序不會改變??
  • ????//?指定元素的比較方法:compare:??
  • ????NSArray?*array2?=?[array?sortedArrayUsingSelector:@selector(compare:)];??
  • ????NSLog(@"array2:%@",?array2);??
  • }??
  • ??
  • #pragma?mark?數組排序2??
  • void?arraySort2()?{??
  • ????Student?*stu1?=?[Student?studentWithFirstname:@"MingJie"?lastname:@"Li"];??
  • ????Student?*stu2?=?[Student?studentWithFirstname:@"LongHu"?lastname:@"Huang"];??
  • ????Student?*stu3?=?[Student?studentWithFirstname:@"LianJie"?lastname:@"Li"];??
  • ????Student?*stu4?=?[Student?studentWithFirstname:@"Jian"?lastname:@"Xiao"];??
  • ????NSArray?*array?=?[NSArray?arrayWithObjects:stu1,stu2,stu3,?stu4,?nil?nil];??
  • ????//?指定排序的比較方法??
  • ????NSArray?*array2?=?[array?sortedArrayUsingSelector:@selector(compareStudent:)];??
  • ????NSLog(@"array2:%@",?array2);??
  • }??
  • -?(NSComparisonResult)compareStudent:(Student?*)stu?{??
  • ????//?先按照姓排序??
  • ????NSComparisonResult?result?=?[self.lastname?compare:stu.lastname];??
  • ????//?如果有相同的姓,就比較名字??
  • ????if?(result?==?NSOrderedSame)?{??
  • ????????result?=?[self.firstname?compare:stu.firstname];??
  • ????}??
  • ????return?result;??
  • }??
  • ??
  • #pragma?mark?數組排序3??
  • void?arraySort3()?{??
  • ????Student?*stu1?=?[Student?studentWithFirstname:@"MingJie"?lastname:@"Li"];??
  • ????Student?*stu2?=?[Student?studentWithFirstname:@"LongHu"?lastname:@"Huang"];??
  • ????Student?*stu3?=?[Student?studentWithFirstname:@"LianJie"?lastname:@"Li"];??
  • ????Student?*stu4?=?[Student?studentWithFirstname:@"Jian"?lastname:@"Xiao"];??
  • ????NSArray?*array?=?[NSArray?arrayWithObjects:stu1,stu2,stu3,?stu4,?nil?nil];??
  • ??????
  • ????//?利用block進行排序??
  • ????NSArray?*array2?=?[array?sortedArrayUsingComparator:??
  • ?????^NSComparisonResult(Student?*obj1,?Student?*obj2)?{??
  • ?????????//?先按照姓排序??
  • ?????????NSComparisonResult?result?=?[obj1.lastname?compare:obj2.lastname];??
  • ?????????//?如果有相同的姓,就比較名字??
  • ?????????if?(result?==?NSOrderedSame)?{??
  • ?????????????result?=?[obj1.firstname?compare:obj2.firstname];??
  • ?????????}??
  • ???????????
  • ?????????return?result;??
  • ????}];??
  • ??????
  • ????NSLog(@"array2:%@",?array2);??
  • }??
  • ??
  • #pragma?mark?數組排序4-高級排序??
  • void?arraySort4()?{??
  • ????Student?*stu1?=?[Student?studentWithFirstname:@"MingJie"?lastname:@"Li"?bookName:@"book1"];??
  • ????Student?*stu2?=?[Student?studentWithFirstname:@"LongHu"?lastname:@"Huang"?bookName:@"book2"];??
  • ????Student?*stu3?=?[Student?studentWithFirstname:@"LianJie"?lastname:@"Li"?bookName:@"book2"];??
  • ????Student?*stu4?=?[Student?studentWithFirstname:@"Jian"?lastname:@"Xiao"?bookName:@"book1"];??
  • ????NSArray?*array?=?[NSArray?arrayWithObjects:stu1,stu2,stu3,?stu4,?nil?nil];??
  • ??????
  • ????//?1.先按照書名進行排序??
  • ????//?這里的key寫的是@property的名稱??
  • ????NSSortDescriptor?*bookNameDesc?=?[NSSortDescriptor?sortDescriptorWithKey:@"book.name"?ascending:YES];??
  • ????//?2.再按照姓進行排序??
  • ????NSSortDescriptor?*lastnameDesc?=?[NSSortDescriptor?sortDescriptorWithKey:@"lastname"?ascending:YES];??
  • ????//?3.再按照名進行排序??
  • ????NSSortDescriptor?*firstnameDesc?=?[NSSortDescriptor?sortDescriptorWithKey:@"firstname"?ascending:YES];??
  • ????//?按順序添加排序描述器??
  • ????NSArray?*descs?=?[NSArray?arrayWithObjects:bookNameDesc,?lastnameDesc,?firstnameDesc,?nil?nil];??
  • ??????
  • ????NSArray?*array2?=?[array?sortedArrayUsingDescriptors:descs];??
  • ??????
  • ????NSLog(@"array2:%@",?array2);??
  • }??


  • 轉載于:https://www.cnblogs.com/Free-Thinker/p/4972341.html

    總結

    以上是生活随笔為你收集整理的ios数组基本用法和排序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。