- NSArray: NSArray是OC中的数组类, 只能存放任意OC对象, 并且是有顺序的, 不能存储非OC对象,它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素。
- NSArray的类方法创建
1.创建一个空数组:
NSArray *arr = [NSArray array];
2.创建只有一个元素的数组:
NSArray *arr = [NSArray arrayWithObject:@"one"];
NSArray *arr = [NSArray arrayWithObjects:@"one",@"two", nil]; 注意末尾要加上nil表示数组赋值结束。
- 使用NSArray的对象方法创建数组
NSArray *arr = [[NSArray alloc] initWithObjects:@"one",@"two", nil];
- 使用已经存在数组创建新的数组
NSArray *arr2 = [NSArray arrayWithArray:arr1];
- NSArray的常见用法
NSArray *arr = [NSArray arrayWithObjects:@"one",@"two", nil];
NSLog(@"%ld",arr. count);
2.获得index位置的元素: -(id)objectAtIndex:(NSUInteger)index;
NSArray *arr = [NSArray arrayWithObjects:@"one",@"two", nil];
NSLog(@"%@",[arr objectAtIndex:1]);
打印结果为two 3.返回数组中某元素的下标:-(NSUInteger)indexOfObject:(id)anObject;
NSArray *arr = [NSArray arrayWithObjects:@"one",@"two", nil];
NSUInteger loc = [arr indexOfObject:@"two"];
4.数组中是否包含了某个元素:-(BOOL)containsObject:(id)anObject;
NSArray *arr = [NSArray arrayWithObjects:@"one",@"two", nil];
BOOL isContain = [arr containsObject:@"two"];
//返回值是BOOL型,包含则为(YES)1,否则为(NO)0
if (isContain) {
NSLog(@"包含此元素");
}else NSLog(@"不包含");
- NSArray的简写形式
NSArray *arr = @[@"one",@"two"];
2.用简化的方式访问数组元素:NSArray *arr = @[@"one",@"two"];
NSString *str = arr[1];
- NSArray 的遍历方法
1.通过下标遍历:
NSArray *arr = [NSArray arrayWithObjects:@"one",@"two", nil];
for (int i=0; i<arr.count; i++) {
NSLog(@"%@",arr[i]);
}
2.快速遍历,for循环的增强形式:for (NSString * str in arr) {
NSLog(@"%@",str);
}
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"idx = %ld,obj = %@",idx,obj);}];
- NSArray数据写入到文件中
BOOL isWrite = [array writeToFile:@"/Users/apple/Desktop/arr.plist" atomically:YES];
if(isWrite){
NSLog(@"写入成功");}
- 从文件读取数据到NSArray中
NSArray *readArr = [NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/arr.plist"];
- NSArray 与字符串
NSArray *arr = @[@"one",@"two"];
NSString *str = [arr componentsJoinedByString:@"-"];
NSLog(@"str = %@",str);
打印结果为 one-two2.把一个字符串分割成一个数组:
NSString *str = @"one-two-three";
NSArray *arr = [str componentsSeparatedByString:@"-"];
- NSMutableArray:是NSArray的子类(NSArray的方法NSMutableArray都能使用),NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素,也不能再往里面添加元素,NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素。
- NSMutableArray基本使用方法
NSMutableArray *arr = [NSMutableArray array];
2.创建的时候初始化一个元素:
NSMutableArray *arr = [NSMutableArray arrayWithObject:@"one"];
3.创建数组的时候,初始化多个元素:
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"one",@"two",nil];
4.创建一个数组,并且指定长度:
NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:5];
5.添加元素: -(void)addObject:(id)object;[arr addObject:@"three"];
6.插入元素到指定的位置:
[arr insertObject:@"zero" atIndex:0];
7.根据对象内容删除删除元素:-(void)removeObject:(id)object;
[arr removeObject:@"one"];
8.根据位置删除元素: - (void)removeObjectAtIndex:(NSUInteger)index;
[arr removeObjectAtIndex:1];
9.删除所有的元素: - (void)removeAllObjects;
[arr removeAllObjects];
10.修改元素:-(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
[arr replaceObjectAtIndex:1 withObject:@"four"];
11.交换数组元素:-(void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
[arr exchangeObjectAtIndex:0 withObjectAtIndex:1];
12.查找元素:
BOOL isSearch = [arr containsObject:@"two"];
- NSDictionary:通过一个key(键), 就能找到对应的value(值);一旦初始化完毕, 里面的内容就无法修改;NSDictionary是无序的。
- NSDictionary的创建
NSDictionary *dict = [NSDictionary dictionary];
2.创建只有一组键值对的字典:NSDictionary *dict = [NSDictionary dictionaryWithObject:@"lisi" forKey:@"ls"];
3.创建多组键值对的字典: //字典的key值和value值,都必须是对象
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2", nil];
- NSDictionary基本使用方法
1.返回字典的键值对数目: -(NSUInteger)count;
NSInteger num = [dict count];
或者
NSInteger num = dict4.count;
2.根据key取出value: - (id)objectForKey:(id)aKey;NSString *str = [dict objectForKey:@"ls"];
- NSDictionary遍历方法
1.快速遍历:
for(NSString *key in dict){
NSLog(@"key = %@,value = %@",key,[dict objectForKey:key]);}
2.使用Block遍历:
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"key=%@,value=%@",key,obj); }];
- NSDictionary的简写
1.简写形式创建字典:
NSDictionary *dict = @{@"zs":@"zhangsan",@"ls":@"lisi",@"ww":@"wangle"};//冒号前面是Key值,后面是Value值
2.用简写形式,获取key对应的value:dict[@"key”];
NSString *str = dict[@"ls"];
- NSDictionary的文件操作
BOOL isWrite = [dict writeToFile:@"/Users/apple/Desktop/dict.plist" atomically:YES];
if (isWrite) {
NSLog(@"写入成功");}
2.从文件中读取字典到内存中: + (nullable NSDictionary<KeyType, ObjectType> *)dictionaryWithContentsOfFile:(NSString *)path;
NSDictionary *readDict = [NSDictionary dictionaryWithContentsOfFile:@"/Users/apple/Desktop/dict.plist"];
- NSMutableDictionary:NSMutableDictionary是NSDictionary的子类(NSMutableDictionary可以使用NSDictionary的所有方法),NSDictionary是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素,NSMutableDictionary是可变的, 随时可以添加\更改\删除元素。
- NSMutableDictionary基本用法
1.给可变字典添加键值对:- (void)setValue:(nullable ObjectType)value forKey:(NSString *)key;
[dict setValue:@"zhangsan" forKey:@"zs"];
2.通过Key值删除对应的value值: - ( void )removeObjectForKey:(KeyType)aKey;[dict removeObjectForKey:@"ls"];
3.删除所有的键值对:- (void)removeAllObjects;
[dict removeAllObjects];
4.根据key值修改value值:- ( void )setObject:(ObjectType)anObject forKey:(KeyType < NSCopying >)aKey; // 此方法与基本用法的第一条“给可变字典添加键值对”可通用,都可以给字典添加键值对,当遇到添加的key值与已字典的key键值同名的,新的value值会取代原来的value值,达到了修改的作用。[dict setObject:@"zhangsan" forKey:@"ls"];
5.通过获取所有key值来进行查找:NSArray *arr = [dict allKeys];
if([arr containsObject:@"ls"]){
NSLog(@"存在ls的key");}
- NSMutableDictionary简写形式
1.快速创建可变字典:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict.dictionary=@{@"ls":@"lisi",@"zs":@"zhangsan"};
2.快速设置键值对:dict[@"ls"] = @"lisi";