黑马程序员——OC语言日志——NSArray的介绍和使用

NSArray是Objective-C中用于存储有序对象的类,作为C数组的替代品,避免了C数组的一些限制,如单一数据类型和无法动态增删元素。在NSArray中,只能存储Objective-C的对象且不可变,不支持非OC对象如基本类型。创建NSArray通常涉及初始化固定内容的数组。

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

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、NSArray的基本介绍

1、NSArray是oc 中的数组类,开发过程中建议尽量使用NSArray替代C语言中的数组。

C语言中的数组的弊端:
1)只能存放一种类型的数据;
2)不能方便的动态添加数组元素、不能很方便的动态删除数组元素(长度固定)。
2、NSArray使用注意事项。
1)只能存放OC对子昂,并且是有序的 ;
2)不能存储非OC对象,比如intfloat double char enum struct等;
3)它是不可变的,一旦初始化完毕后,它里面的内容就永远时候固定的,不能删除里面的元素,也不能再往里面添加元素。

二、NSArray创建方式

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
       //创建一个空数组
        NSArray *arry1=[NSArray array];
        NSLog(@"arry1=%@",arry1);
        //创建数组,只有”–“素
        NSArray *arry2 = [NSArray arrayWithObject:@"a"];
        NSLog(@"arry2=%@",arry2);
        //创建数组,多个元素,常见方法
        NSArray *arry3 = [NSArray arrayWithObjects:@"2",@1, nil];
         NSLog(@"arry3=%@",arry3);
        /*调用对象方法,创建数组,NSArray中不呢个存储nil,NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0,0是基本数据类型不能存放到NASArray中。*/
        NSArray *arry4=[[NSArray alloc] initWithObjects:@"1",@"2",[NSNull null], nil];
        NSLog(@"arry4=%@",arry4);
        //用一个数组可以创建另一个数组
        NSArray *arry5 = [NSArray arrayWithArray:arry3];
        NSLog(@"arry5=%@",arry5);
    }
    return 0;
}
三、常见用法

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
       NSArray *arry3 = [NSArray arrayWithObjects:@"2",@1, @"langya",nil];
        //获取数组长度
        NSLog(@"arry3长度为:%ld",arry3.count);
        //根据下表获取相应对象
        NSLog(@"%@",[arry3 objectAtIndex:2]);
        //返回元素得到下标
        NSUInteger loc = [arry3 indexOfObject:@"langya"];
        NSLog(@"%ld",loc);
        //数组中是否包含了某个元素
        if([arry3 containsObject:@"2"]){
            NSLog(@"包含");
        }
        else{
            NSLog(@"不包含");
        }
        //用简化的方式,来定义和“问数组
        NSArray *arry = @[@"ee",@"rr",@"gg"];
        NSLog(@"%@",arry);
        //用简化的方式访问数组
        NSString *str = arry[2];
        NSLog(@"%@",str);
    }
    return 0;
}
四、遍历方法

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray *arr = @[@"one",@"tow",@"three",@"four"];
        //1)普通方式,通过下标
        for(int i=0;i<arr.count;i++)
        {
            NSLog(@"普通%@",arr[i]);
        }
        //2)快速枚举法 for循环的增强形式
        for (NSString *str in arr) {
            NSLog(@"快速枚举%@",str);
        }
        //使用block的方式,进行––
        //stop:YES 会停止遍历,NO 不停止
        [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
            NSLog(@"idx=%ld,obj=%@",idx,obj);
        }];
        //遍历到第2各元素,停止
        [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
            if(idx==2){
                *stop=YES;
            }
            else{
                NSLog(@"idx=%ld,obj=%@",idx,obj);
            }
            
        }];
        
    }
    return 0;
}

五、读写文件
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //写文件
        NSArray *arry = [NSArray arrayWithObjects:@"one",@"tow",@"three",@"four", nil];
        BOOL arrwrite = [arry writeToFile:@"//Users/hongjitong/Desktop/arry.plist" atomically:YES];
                         if(arrwrite){
                             NSLog(@"写入成功");
                         }
        //读文件
        NSArray *reaarry = [NSArray arrayWithContentsOfFile:@"//Users/hongjitong/Desktop/arry.plist"];
        NSLog(@"%@",reaarry);
    }
    return 0;
}
六、NSArray与字符串


#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray *arry = @[@1,@2,@3,@4,@5];
        //1)把数组中的元素用“-”链接起来1-2-3-4-5
        NSString *str = [arry componentsJoinedByString:@"-"];
        NSLog(@"%@",str);
        //2)给一个字符串,分割成数组400-800-8007
        NSString *str1 = @"400-800-8007";
        NSArray *arry2 = [str1 componentsSeparatedByString:@"-"];
        NSLog(@"%@",[arry2 firstObject]);
        NSLog(@"%@",arry2 [1]);
        NSLog(@"%@",[arry2 lastObject]);
        //如果是400-800-8007#500-600-12570
        //先分开为400-800-8007和500-600-12570
        NSString *str3 = @"400-800-8007#500-600-12570";
        NSArray *arry3 = [str3 componentsSeparatedByString:@"#"];
        NSLog(@"%@",arry3);
        //继续分割各各元素400-800-8007和500-600-12570
        NSArray *arry31 = [arry3[0] componentsSeparatedByString:@"-"];
        NSArray *arry32 = [arry3[1] componentsSeparatedByString:@"-"];
        //打印
        NSLog(@"%@,%@",arry31,arry32);
        
        
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值