iOS-OC-NSArray用法大全详细说明

来源:互联网 发布:阿拉伯血钻野燕麦知乎 编辑:程序博客网 时间:2024/04/30 22:22
+ (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);    }}

0 0
原创粉丝点击