黑马程序员——OC之NSArray、NSDictionary

本文详细介绍了Objective-C中的NSArray和NSDictionary的使用,包括创建、获取元素、遍历、文件操作等方法,同时也讲解了NSMutableArray和NSMutableDictionary的可变操作特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • NSArray: NSArray是OC中的数组类, 只能存放任意OC对象, 并且是有顺序的, 不能存储非OC对象,它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素。
  • NSArray的类方法创建

1.创建一个空数组:

 NSArray *arr = [NSArray array];

2.创建只有一个元素的数组:

 NSArray *arr = [NSArray arrayWithObject:@"one"];


3.创建有多个元素的数组:

NSArray *arr = [NSArray arrayWithObjects:@"one",@"two", nil];  注意末尾要加上nil表示数组赋值结束。

  • 使用NSArray的对象方法创建数组

NSArray *arr = [[NSArray alloc] initWithObjects:@"one",@"two", nil];

  • 使用已经存在数组创建新的数组

NSArray *arr2 = [NSArray arrayWithArray:arr1];

  • NSArray的常见用法
1.获取数组的长度:- (NSUInteger)count;

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的简写形式
1.用简化的方式,定义数组:

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);

        }

3.使用block遍历:

[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 与字符串
1.把数组中的元素用指定的字符连接起来: - (NSString *)componentsJoinedByString:(NSString*)separator;

NSArray *arr = @[@"one",@"two"];

NSString *str = [arr componentsJoinedByString:@"-"];

NSLog(@"str = %@",str);

打印结果为 one-two

2.把一个字符串分割成一个数组:

NSString *str = @"one-two-three";

NSArray *arr = [str componentsSeparatedByString:@"-"];

  • NSMutableArray:是NSArray的子类(NSArray的方法NSMutableArray都能使用),NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素,也不能再往里面添加元素,NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素。
  • NSMutableArray基本使用方法

1.创建空数组:

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的创建

1.创建空字典: +(instancetype)dictionary;

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的文件操作
1.把字典保存到文件中:- ( BOOL )writeToFile:( NSString *)path atomically:( BOOL )useAuxiliaryFile;

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(@"存在lskey");}

  • NSMutableDictionary简写形式        

1.快速创建可变字典:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

dict.dictionary=@{@"ls":@"lisi",@"zs":@"zhangsan"};

2.快速设置键值对:

dict[@"ls"] = @"lisi";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值