美文网首页iOS Developer
NSArray的基本使用

NSArray的基本使用

作者: Coder007 | 来源:发表于2016-12-15 14:50 被阅读83次
NSArray基本概念
  • 只能存放任意OC对象,并且是有序的
  • 不能存储非OC对象,比如int\float\double\char\enum\struct等
  • 是不可变的,一旦初始化完毕,里面的内容固定不变,不可删除里面的元素,也不能增加元素
NSArray创建方式
  • 通常我们创建NSArray的时候,我们使用类方法进行创建
+ (instancetype)array;
+ (instancetype)arrayWithObject:(ObjectType)anObject;
+ (instancetype)arrayWithObjects:(ObjectType)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray<ObjectType> *)array;
+ (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;
+ (nullable NSArray<ObjectType> *)arrayWithContentsOfURL:(NSURL *)url;
NSArray的注意事项
  • NSArray中不能存储nil,因为NSArray认为nil是数组的结束标记
NSArray的常用方法
NSArray *arr = @[@"123",@"456",@"6777"];

// 获取数组元素个数
NSUInteger count = [arr count];

// 获取index位置的元素
NSString *str1 = [arr objectAtIndex:0];

// 是否包含某一个元素
BOOL isContain = [arr containsObject:@"123"];

// 返回最后一个元素
NSString *str2 = [arr lastObject];

// 返回第一个元素
NSString *str3 = [arr firstObject];

// 查找元素在数组中得位置,如果找不到返回-1
int index = [arr indexOfObject:@"111"];
快速创建方式
NSArray *arr = @[@"123", @"qwe"];
遍历数组
NSArray *arr = @[@"3",@"1",@"4",@"10",@"5"];
// 下标遍历
for (int i = 0; i < arr.count; i++) {
    NSLog(@"%@",arr[i]);
}

// 快速遍历
for (NSString *str in arr) {
    NSLog(@"%@",str);
}

// 使用block遍历
// stop用来控制什么时候遍历停止,*stop = YES 将停止遍历
[arr enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) {
    NSLog(@"%@",obj);
}];
给NSArray中所有元素发消息
  • 如果集合中保存的是自定义对象,想让集合中得所有对象都执行某一个方法的时候
  • 可以使用以下两个方法
  • 如果数组中的对象没有这个方法会报错
[arr makeObjectsPerformSelector:@selector(方法名)];
[arr makeObjectsPerformSelector:@selector(方法名:) withObject:@""];
NSArray排序
  • 数组中得元素都是Foundation框架中的对象,不是自定义对象
  • 使用compare:方法进行排序
NSArray *arr = @[@3,@1,@4,@10,@5];
NSArray *newArr1 = [arr sortedArrayUsingSelector:@selector(compare:)];
  • 下面的这个方法可以针对Foundation框架中的对象,也可以是自定义对象
  • 默认是升序排序
  • block中的两个参数类型可以根据数组中元素的类型进行更改
NSArray *arr = @[@3,@1,@4,@10,@5];
NSArray *newArr2 = [arr sortedArrayUsingComparator:^NSComparisonResult(NSNumber *obj1, NSNumber *obj2) {
     return obj1 > obj2;
}];
NSArray与NSString之间的转换
  • NSArray 转换为 NSString
  • - (NSString *)componentsJoinedByString:(NSString *)separator;
  • separator 插入元素之间的字符串
NSArray *arr = @[@3,@1,@4,@10,@5];
NSString *str = [arr componentsJoinedByString:@"--"];
  • NSString 转换成 NSArray
  • - (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;
  • eparator 最为分割符切割字符串
NSString *str1 = @"3--1--4--10--5";
NSArray *arr1 = [str1 componentsSeparatedByString:@"--"];
NSArray文件读写
  • 将数组写入文件
  • 数组元素必须是Foundation框架中类创建的对象
  • 如果是自定义对象将没有办法写入
NSArray *arr = @[@"123",@"awe11",@"zdxcq"];
[arr writeToFile:@"/Users/coder/Desktop/sublime.plist" atomically:YES];
  • 从文件中读取数据到NSArray中
NSArray *arr1 = [NSArray arrayWithContentsOfFile:@"/Users/coder/Desktop/sublime.plist"];

相关文章

网友评论

    本文标题:NSArray的基本使用

    本文链接:https://www.haomeiwen.com/subject/ppcgmttx.html