iOS-NSArray用法大全详细说明

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

+ (void)NSArrayCreateMethod
{
    // 如果用这种格式,最后不用加nil!
    NSArray *array = @[@"one", @"two", @"three"];
    NSLog(@"array = %@",array);
    QFDog *xiaoBai = [[QFDog alloc] init];
    QFDog *xiaoHei = [[QFDog alloc] init];
    NSArray *array1 = @[@"one", array, @"two", xiaoBai, xiaoHei];
    // 打印数组的时候,NSArray的description方法,是遍历这个数组,对数组里的每个对象,调用他这个对象的description方法。
    NSLog(@"array1 = %@",array1);
    
    // 用多个对象,来初始化array2数组 (注意,数组以nil结尾)
    NSArray *array2 = [[NSArray alloc] initWithObjects:array, array1, @"one", xiaoBai, nil];
    NSLog(@"array2 = %@",array2);
    // 对应的加方法, 用多个对象来创建array3
    NSArray *array3 = [NSArray arrayWithObjects:@"one", @"two", xiaoBai, xiaoHei, nil];
    NSLog(@"array3 = %@",array3);
 
    // 用一个array3数组元素的内容,来初始化array4
    NSArray *array4 = [[NSArray alloc] initWithArray:array3];
    NSLog(@"array4 = %@",array4);
    // 对应的加方法,用array4数组元素的内容,来创建array5
    NSArray *array5 = [NSArray arrayWithArray:array4];
    NSLog(@"array5 = %@",array5);
 
    // 要注意和如下方法的区别,用array4这个对象,来创建一个array6.
    NSArray *array6 = [NSArray arrayWithObject:array4];
    NSLog(@"array6 = %@",array6);
}
 
// NSString, NSArray, NSDictionary 都是由类簇实现的,都不能被继承。
+ (void)NSArraySimpleMethod
{
    NSArray *array = @[@"one", @"two", @"three", @"four", @"three"];
    // 返回数组元素的个数。
    NSLog(@"count1 = %lu",[array count]);
    NSArray *array1 = [NSArray arrayWithObjects:@"one", @"two", array, @"four", @"five", @"six", nil];
    // nil并不是数组里的元素。
    NSLog(@"count2 = %lu",[array1 count]);
    // 遍历数组里所有的元素 (类似于C的数组方式)
    for (int i=0; i<[array1 count]; i++) {
        NSLog(@"array[%d] = %@", i, array1[i]);
    }
    // 也可以用如下方法取,就等价于array1[3];
    // 根据下标,获取数组中得元素
    NSString *str = [array1 objectAtIndex:3];
    NSLog(@"str = %@",str);
    // 注意,数组不能越界访问! (nil 并不是数组的元素)
    // str = [array1 objectAtIndex:[array1 count]];
    
    // NSIndexSet 是一个数字的集合类 (里面装的是数字的集合)
    // 通过一个range创建一个数字集合, 这个集合有(1,2,3,4)四个数字。
    //字符串的截取
    NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 4)];
    // 根据一个数字集合,返回一个数组。 (获取子数组)
    NSArray *subArray = [array1 objectsAtIndexes:indexSet];
    NSLog(@"subArray = %@",subArray);
    
    // 根据对象,返回在数组里的索引(数组里存在的第一个索引)
    NSLog(@"%lu",[array indexOfObject:@"three"]);
    // 根据对象,返回一个range范围内对应的数组的索引
    NSLog(@"%lu",[array indexOfObject:@"three" inRange:NSMakeRange(3, 2)]);
    // 如果找不到,返回NSNotFound
    if ([array indexOfObject:@"123"] == NSNotFound) {
        NSLog(@"没有找到");
    }
    
    // 将字符串分割成一个数组(字符集合, 字符串)
    // 注意,我们分割出来的是不可变数组
    // @"" @"Don't" @"" @"trouble" @"" @"trouble" @"" @"or" @"trouble" @"trouble" @"you" @"" @""
    NSString *string = @" Don't  trouble  trouble, or trouble trouble you! ";
    // NSCharacterSet 是一个字符集合,这个方法是用一个字符串的字符,来创建一个字符集合。
    NSCharacterSet *cs = [NSCharacterSet characterSetWithCharactersInString:@", !"];
    NSArray *array2 = [string componentsSeparatedByCharactersInSet:cs];
    NSLog(@"array2 = %@",array2);
    // 剔除空串 NSMutableArray的时候说。
    
    NSString *string1 = @"Give  you  some  color see  see";
    // 以字符串整体作为分割条件
    NSArray *array3 = [string1 componentsSeparatedByString:@"  "];
    NSLog(@"array3 = %@",array3);
 
    // 将一个字符串的数组,拼接成一个字符串
    NSString *string2 = [array3 componentsJoinedByString:@"-"];
    NSLog(@"string2 = %@",string2);
    NSLog(@"%@",[array2 componentsJoinedByString:@"-"]);
    
    // 数组的枚举,快速枚举
    // 枚举器 NSEnumerator
    // 数组的方法,创建一个枚举器 (正序的枚举器)
    NSEnumerator *e = [array3 objectEnumerator];
    // 这个地方,最好写成id obj; 但是因为我们明确知道,这个数组里装的都是字符串,我们也可以写成NSString *obj;
    NSString *obj = nil;
    // e nextObject 这个方法,会将数组的元素,依次取出,赋值给obj, 直到最后返回nil给obj, 退出循环。
    while (obj = [e nextObject]) {
        NSLog(@"obj = %@",obj);
    }
    NSLog(@"---------------");
    // 创建一个反序的枚举器
    e = [array3 reverseObjectEnumerator];
    while (obj = [e nextObject]) {
        NSLog(@"obj = %@",obj);
    }
 
    // 快速枚举 (用的非常多,非常方便)
    // id obj, 相当于定义了一个id类型的obj语句块变量
    // for (int i=0; i<....)
    // 将array1里的元素,依次赋值给obj,直到nil结束。
    for (id obj in array1) {
        NSLog(@"obj = %@",obj);
        // [NSArray class] 这个方法返回的就是NSArray类的名字。
        // NSClassFromString(@"NSArray") 根据字符串返回一个类的名字,返回的就是NSArray
        // isMemberOfClass, 是判断obj是否为[NSArray class]类的对象。
        // [obj isMemberOfClass:[NSArray class]]
        // isKindOfClass, 判断obj是否为NSArray类,或者其子类的对象。
        // if ([obj isKindOfClass:[NSArray class]]) {
//        if ([obj isKindOfClass:NSClassFromString(@"NSArray")]) {
//            continue;
//        }
//        if ([obj isEqualToString:@"four"]) {
//            break;
//        }
    }
    NSLog(@"--------");
    // 通过for循环也可以,for循环除了i++,还能i+=2,但是快速枚举,枚举器是无法做到的!
    for (int i=0; i<[array count]; i++) {
        // id obj = [array objectAtIndex:i];
        id obj = array[i];
        NSLog(@"obj = %@",obj);
    }
}

 

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS-NSArray用法大全详细说明》 发布于2019-10-31

分享到:
赞(0)

评论 抢沙发

4 + 9 =


iOS-NSArray用法大全详细说明

长按图片转发给朋友

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录