Skip to content

Latest commit

 

History

History
147 lines (111 loc) · 2.99 KB

File metadata and controls

147 lines (111 loc) · 2.99 KB

数组

数组只能存储对象类型,并且结束标示符为nil,所以尤为注意,所以需要存储空类型,需要使用NSNull.

##初始化

常用初始化方法列表

+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
+ (instancetype)arrayWithArray:(NSArray *)array;
+ (NSArray *)arrayWithContentsOfFile:(NSString *)path;
+ (NSArray *)arrayWithContentsOfURL:(NSURL *)url;

示例:

// 初始化方法
NSArray *array1 = [NSArray arrayWithObjects:@"hello", @"world", @"iOS", @"android", nil];
// 简写:
NSArray *array2 = @[@"hello", @"world"];
##取值

这里有id的详细说明id和instancetype区别

// 取值
id object1 = [array1 objectAtIndex:2];
// 简写
id object2 = array1[2];
// 取下标
NSUInteger index = [array indexOfObject:@"iOS"]
##获取数量
// 计数
NSLog(@"count = %ld", array1.count);
##查询
// 查询
NSLog(@"%d", [array1 containsObject:@"123"]);
##增加
// 增加一个元素
NSArray *array3 = [array1 arrayByAddingObject:@"123"];
// 增加一个数组所有的元素
NSArray *array4 = [array1 arrayByAddingObjectsFromArray:array2];
NSLog(@"array3 = %@", array3);
NSLog(@"array4 = %@", array4);
##切分数组
NSArray *array = @[@"www", @"baidu", @"com"];
// 利用点拼接数组元素
NSString *string = [array componentsJoinedByString:@"."];
// 利用点分割字符串
NSArray *newArray = [string componentsSeparatedByString:@"."];
##排序
NSArray *array = [NSArray arrayWithObjects:@"hello", @"world", @"iOS", @"android", nil];

###使用系统方法

默认是升序

// 区分大小写排序
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];
// 不区分大小写排序
NSArray *sortedArray1 = [array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

###使用代码块

// 使用代码块
NSArray *sortedArray2 = [array1 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
   // 主要逻辑,决定当前是升序还是降序
   // 如果在return之后加上负号,则降序。
   return [obj1 compare:obj2];
}];  
##遍历数组
// 第一种
for (int i = 0; i < array.count; i ++) {
   NSLog(@"%@", array[i]);
}
// 快速遍历
for (id obj in array) {
   NSLog(@"%@", obj);
}
// 使用枚举器
NSEnumerator *enumerator = [array objectEnumerator];
id obj = [enumerator nextObject];
while (obj) {
   NSLog(@"枚举%@", obj);
   obj = [enumerator nextObject];
}