標籤:des blog os io 檔案 for ar div
一、建立數組
// 建立一個空的數組 02.NSArray *array = [NSArray array]; 03.// 建立有1個元素的數組 04.array = [NSArray arrayWithObject:@"123"]; 05.// 建立有多個元素的數組 06.array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil nil]; 07.NSArray *array3 = [array arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:@"4", @"5", nil nil]]; 08. 09.NSArray *array4 = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil nil]; 10.NSRange range = NSMakeRange(1, 2); 11.NSArray *array5 = [array4 subarrayWithRange:range];
二、數組的基本用法
int count = [array count];//個數 02.// 判斷是否包含了某個元素 03.if ([array containsObject:@"a"]) { 04. NSLog(@"包含了字串a"); 05.} 06.NSString *last = [array lastObject];最後一個元素 07.NSString *str = [array objectAtIndex:1];根據索引擷取數組中的元素 08.int index = [array indexOfObject:@"c"];擷取指定元素的索引 09.// 讓數組裡面的所有對象都調用test方法,123為參數 10.NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, nil nil]; 11.[array makeObjectsPerformSelector:@selector(test2:) withObject:@"123"]; 12.NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil nil]; 13.// 1-2-3-4 14.// 利用分隔字元-拼接所有的數組元素 15.NSString *str = [array componentsJoinedByString:@"-"]; 16.// 將一個數組寫入檔案(產生的是一個xml檔案) 17.NSString *path = @"/Users/apple/Desktop/array.xml"; 18.[array writeToFile:path atomically:YES]; 19.path = @"/Users/apple/Desktop/array.txt"; 20.// 從檔案中讀取數組內容(檔案有嚴格的格式要求) 21.NSArray *array2 = [NSArray arrayWithContentsOfFile:path];
三、遍曆數組
#pragma mark 遍曆數組1 02.void arrayFor1() { 03. NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil nil]; 04. int count = array.count; 05. for (int i = 0; i<count; i++) { 06. id obj = [array objectAtIndex:i]; 07. } 08.} 09. 10.#pragma mark 遍曆數組2 快速遍曆 11.void arrayFor2() { 12. Student *stu1 = [Student student]; 13. NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil nil]; 14. int i =0; 15. for (id obj in array) { 16. NSLog(@"%i-%@", i, obj); 17. i++; 18. } 19.} 20. 21.#pragma mark 遍曆數組3 22.void arrayFor3() { 23. Student *stu1 = [Student student]; 24. NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil nil]; 25. [array enumerateObjectsUsingBlock: 26. ^(id obj, NSUInteger idx, BOOLBOOL *stop) { 27. NSLog(@"%i-%@", idx, obj); 28. // 如果索引為1,就停止遍曆 29. if (idx == 1) { 30. // 利用指標修改外面BOOL變數的值 31. *stop = YES; 32. } 33. }]; 34.} 35. 36.#pragma mark 遍曆數組4 37.void arrayFor4() { 38. Student *stu1 = [Student student]; 39. NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil nil]; 40. // 擷取數組的迭代器 41. // NSEnumerator *enumerator = [array objectEnumerator]; 42. // 反序迭代器(從尾部開始遍曆元素) 43. NSEnumerator *enumerator = [array reverseObjectEnumerator]; 44. // allObjects是取出沒有被遍曆過的對象 45. NSArray *array2 = [enumerator allObjects]; 46. NSLog(@"array2:%@", array2); 47. // 擷取下一個需要遍曆的元素 48. id obj = nil; 49. while (obj = [enumerator nextObject]) { 50. NSLog(@"obj=%@", obj); 51. } 52.}
四、數組排序
#pragma mark 數組排序1 02.void arraySort1() { 03. NSArray *array = [NSArray arrayWithObjects:@"2", @"3", @"1", @"4", nil nil]; 04. 05. // 返回一個排好序的數組,原來數組的元素順序不會改變 06. // 指定元素的比較方法:compare: 07. NSArray *array2 = [array sortedArrayUsingSelector:@selector(compare:)]; 08. NSLog(@"array2:%@", array2); 09.} 10. 11.#pragma mark 數組排序2 12.void arraySort2() { 13. Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li"]; 14. Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang"]; 15. Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li"]; 16. Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao"]; 17. NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil]; 18. // 指定排序的比較方法 19. NSArray *array2 = [array sortedArrayUsingSelector:@selector(compareStudent:)]; 20. NSLog(@"array2:%@", array2); 21.} 22.- (NSComparisonResult)compareStudent:(Student *)stu { 23. // 先按照姓排序 24. NSComparisonResult result = [self.lastname compare:stu.lastname]; 25. // 如果有相同的姓,就比較名字 26. if (result == NSOrderedSame) { 27. result = [self.firstname compare:stu.firstname]; 28. } 29. return result; 30.} 31. 32.#pragma mark 數組排序3 33.void arraySort3() { 34. Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li"]; 35. Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang"]; 36. Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li"]; 37. Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao"]; 38. NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil]; 39. 40. // 利用block進行排序 41. NSArray *array2 = [array sortedArrayUsingComparator: 42. ^NSComparisonResult(Student *obj1, Student *obj2) { 43. // 先按照姓排序 44. NSComparisonResult result = [obj1.lastname compare:obj2.lastname]; 45. // 如果有相同的姓,就比較名字 46. if (result == NSOrderedSame) { 47. result = [obj1.firstname compare:obj2.firstname]; 48. } 49. 50. return result; 51. }]; 52. 53. NSLog(@"array2:%@", array2); 54.} 55. 56.#pragma mark 數組排序4-進階排序 57.void arraySort4() { 58. Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li" bookName:@"book1"]; 59. Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang" bookName:@"book2"]; 60. Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li" bookName:@"book2"]; 61. Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao" bookName:@"book1"]; 62. NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil]; 63. 64. // 1.先按照書名進行排序 65. // 這裡的key寫的是@property的名稱 66. NSSortDescriptor *bookNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES]; 67. // 2.再按照姓進行排序 68. NSSortDescriptor *lastnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES]; 69. // 3.再按照名進行排序 70. NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstname" ascending:YES]; 71. // 按順序添加排序描述器 72. NSArray *descs = [NSArray arrayWithObjects:bookNameDesc, lastnameDesc, firstnameDesc, nil nil]; 73. 74. NSArray *array2 = [array sortedArrayUsingDescriptors:descs]; 75. 76. NSLog(@"array2:%@", array2); 77.}