遍歷數組ios


使用數組對象創建的數組功能非常強大,在Java語言或者C語言中定義的數組必須滿足數組中的每一個元素必須是同樣的類型。而Objective-C語言可以在Array數組中放任意類型的數據,值得注意的是只能放指向這個對象的指針,如果直接放int ,char,double 等等,是不行的.
 
1.不可變數組對象
 
使用NSArray關鍵字創建一個不可變的數組,一旦初始化完畢后這個數組的元素是不可以在動態的添加與刪除。
創建MyClass對象,將指向這個對象的指針也可以存入NSArray數組中,可見NSArray對象數組中可以儲存任意對象的數據。
 
[array count] : 得到這個對象數組的長度。
[array objectAtIndex 0]: 傳入數組腳標的id 得到數據對象。
[arrayWithObjects; ...] :向數組對象初始化賦值。這里可以寫任意對象的指針,結尾必須使用nil。標志結束~
 
使用for循環遍歷這個數組對象。
  1. #import <UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. int main(int argc, char *argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  6. //添加我們的測試代碼
  7. //創建自定義類
  8. MyClass *myClass = [[MyClass alloc]init];
  9. //創建一個不可變的數組
  10. NSArray *array= [NSArray arrayWithObjects:@"雨松", @"MOMO",@"哇咔咔",myClass,nil];
  11. //得到數組的長度
  12. int count = [array count];
  13. //遍歷這個數組
  14. for (int i = 0; i < count; i++) {
  15. NSLog(@"普通的遍歷:i = %d 時的數組對象為: %@",i,[array objectAtIndex: i]);
  16. }
  17. int retVal = UIApplicationMain(argc, argv, nil, nil);
  18. [pool release];
  19. return retVal;
  20. }
 
Objective-C語法之數組對象(轉)

上面的for循環遍歷方法比較普遍,但是效率不好,而且安全性不高。Objective-C 提供了一種快速枚舉遍歷方法,推薦大家都使用這種方法來遍歷。
 
for(NSObject *object in array) : 遍歷array這個數組,每一次循環將數組中的元素賦值給 *object ,實現循環遍歷。
#import <UIKit/UIKit.h>
  1. #import "MyClass.h"
  2. int main(int argc, char *argv[])
  3. {
  4. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  5. //添加我們的測試代碼
  6. //創建自定義類
  7. MyClass *myClass = [[MyClass alloc]init];
  8. //創建一個不可變的數組
  9. NSArray *array= [NSArray arrayWithObjects:@"雨松", @"MOMO",@"哇咔咔",myClass,nil];
  10. //遍歷這個數組
  11. for (NSObject *object in array) {
  12. NSLog(@"快速的遍歷數組對象為: %@",object);
  13. }
  14. int retVal = UIApplicationMain(argc, argv, nil, nil);
  15. [pool release];
  16. return retVal;
  17. }
Objective-C語法之數組對象(轉)
 
 
2.可變數組對象
 
[NSMutableArray arrayWithCapacity:10] :初始化可變數組對象的長度,如果后面代碼繼續添加數組超過長度10以后 NSMutableArray的長度會自動擴充,所以不用擔心數組越界。
[array addObject:...] : 向可變數組尾部添加數據對象。
[array addObjectsFromArray:..] :向可變數組尾部添加一個數組對象。 *)#>];
  1. #import <UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. int main(int argc, char *argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  6. //添加我們的測試代碼
  7. //創建自定義類
  8. MyClass *myClass = [[MyClass alloc]init];
  9. //創建一個可變的數組長度為10
  10. NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];
  11. //向數組中動態的添加對象
  12. [array addObject:@"雨松"];
  13. [array addObject:@"MOMO"];
  14. [array addObject:@"小可愛"];
  15. [array addObject:@"哇咔咔"];
  16. [array addObject:myClass];
  17. for (NSObject * object in array)
  18. {
  19. NSLog(@"輸出對象數組:%@", object);
  20. }
  21. int retVal = UIApplicationMain(argc, argv, nil, nil);
  22. [pool release];
  23. return retVal;
  24. }
 
Objective-C語法之數組對象(轉)
 
[array insertObject:@"插入一只小老虎" atIndex:1] :向可變數組中插入一個字符串對象,並且設定它的位置腳標索引為 1。

[array insertObject:(NSArray *) atIndex:(NSIndexSet *)] :向可變數組中插入一個數組對象,可以任意設置它的位置腳標索引。

  1. #import <UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. int main(int argc, char *argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  6. //添加我們的測試代碼
  7. //創建自定義類
  8. MyClass *myClass = [[MyClass alloc]init];
  9. //創建一個可變的數組長度為10
  10. NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];
  11. //向數組中動態的添加對象
  12. [array addObject:@"雨松"];
  13. [array addObject:@"MOMO"];
  14. [array addObject:@"小可愛"];
  15. [array addObject:@"哇咔咔"];
  16. [array addObject:myClass];
  17. //向數組中插入
  18. [array insertObject:@"插入一只小老虎" atIndex:1];
  19. for (NSObject * object in array)
  20. {
  21. NSLog(@"輸出對象數組:%@", object);
  22. }
  23. int retVal = UIApplicationMain(argc, argv, nil, nil);
  24. [pool release];
  25. return retVal;
  26. }
 
Objective-C語法之數組對象(轉)
 
NSRange range = NSMakeRange(0,5); 設置一個范圍為 0 到 5 之間。
[array removeObject:myClass inRange:range] : 設置在一個范圍內刪除數據,如果這個范圍內沒有刪除的這個對象則不會刪除任何東西。例子中因為myClass對象在 數組 0 到 5的范圍內,所以myClass就被刪除掉了。
 
[array removeObject:(id)] :無需考慮范圍,主要數組中存在這個對象就會直接被刪除。
[array removeObjectAtIndex:(NSUInteger)]:刪除數組中指定腳標索引的數據。
 
[array removeObjectIdenticalTo:(id)] : 刪除數組中指定元素
[array removeObjectIdenticalTo:(id) inRange:(NSRange)] : 在指定范圍內刪除指定的元素。
 
[array removeObjectsInArray:(NSArray *)] :刪除一個數組的元素。
  1. #import <UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. int main(int argc, char *argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  6. //添加我們的測試代碼
  7. //創建自定義類
  8. MyClass *myClass = [[MyClass alloc]init];
  9. //創建一個可變的數組長度為10
  10. NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];
  11. //向數組中動態的添加對象
  12. [array addObject:@"雨松"];
  13. [array addObject:@"MOMO"];
  14. [array addObject:@"小可愛"];
  15. [array addObject:@"哇咔咔"];
  16. [array addObject:myClass];
  17. //設置一個刪除范圍
  18. NSRange range=NSMakeRange(0,5);
  19. //刪除元素
  20. [array removeObject:myClass inRange:range];
  21. for (NSObject * object in array)
  22. {
  23. NSLog(@"輸出對象數組:%@", object);
  24. }
  25. int retVal = UIApplicationMain(argc, argv, nil, nil);
  26. [pool release];
  27. return retVal;
  28. }
 
Objective-C語法之數組對象(轉)
 
[array replaceObjectAtIndex 2 withObject:@"已經修改了"]:替換數組腳標為2的數據。
  1. #import <UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. int main(int argc, char *argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  6. //添加我們的測試代碼
  7. //創建自定義類
  8. MyClass *myClass = [[MyClass alloc]init];
  9. //創建一個可變的數組長度為10
  10. NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];
  11. //向數組中動態的添加對象
  12. [array addObject:@"雨松"];
  13. [array addObject:@"MOMO"];
  14. [array addObject:@"小可愛"];
  15. [array addObject:@"哇咔咔"];
  16. [array addObject:myClass];
  17. //修改腳標索引為2的元素
  18. [array replaceObjectAtIndex: 2 withObject:@"已經修改了"];
  19. for (NSObject * object in array)
  20. {
  21. NSLog(@"輸出對象數組:%@", object);
  22. }
  23. int retVal = UIApplicationMain(argc, argv, nil, nil);
  24. [pool release];
  25. return retVal;
  26. }

Objective-C語法之數組對象(轉)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM