NSArray

作者: DeerRun | 来源:发表于2018-12-12 17:06 被阅读0次
//    NSArray *arr = [[NSArray alloc] init];
//    NSArray *arr = [NSArray arrayWithObject:@"lnj"];

    // 数组中的nil是结束符
NSArray *arr = [NSArray arrayWithObjects:@"lnj", @"lmj" ,@"jjj", @"cp", nil];
NSArray *arr = @[@"lnj", @"lmj", @"jjj"];

NSLog(@"count = %lu", [arr count]);
NSLog(@"last = %@", [arr lastObject]);
NSLog(@"first = %@", [arr firstObject]);
NSLog(@"arr[1] = %@", [arr objectAtIndex:1]);
// 如果是OC数组可以使用OC中的增强for循环来遍历
    // 逐个取出arr中的元素, 将取出的元素赋值给obj
    // 注意: obj的类型可以根据数组中元素的类型来写, 不一定要写NSObject
    for (NSString *obj in arr) {
        NSLog(@"obj = %@", obj);
    }
    
    
    /*
    // 使用OC数组的迭代器来遍历
    // 每取出一个元素就会调用一次block
    // 每次调用block都会将当前取出的元素和元素对应的索引传递给我们
    // obj就是当前取出的元素, idx就是当前元素对应的索引
    // stop用于控制什么时候停止遍历
    [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        if (idx == 1) {
            *stop = YES;
        }
        NSLog(@"obj = %@, idx = %lu", obj, idx);
    }];

// 如果使用OC数组存储对象, 可以调用OC数组的方法让数组中所有的元素都执行指定的方法
    // 注意点: 如果数组中保存的不是相同类型的数据, 并且没有相同的方法, 那么会报错
//    [arr makeObjectsPerformSelector:@selector(say)];
    
    // withObject: 需要传递给调用方法的参数
    [arr makeObjectsPerformSelector:@selector(sayWithName:) withObject:@"lnj"];
NSArray *arr = @[@10, @20, @5, @7, @15];
    NSLog(@"排序前: %@", arr);
    // 注意: 想使用compare方法对数组中的元素进行排序, 那么数组中的元素必须是Foundation框架中的对象, 也就是说不能是自定义对象
    NSArray *newArr = [arr sortedArrayUsingSelector:@selector(compare:)];
    NSLog(@"排序后: %@", newArr);

// 该方法默认会按照升序排序
    NSArray *newArr = [arr sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(Person *obj1, Person *obj2) {
        // 每次调用该block都会取出数组中的两个元素给我们
        // 二分
//        NSLog(@"obj1 = %@, obj2 = %@", obj1, obj2);
        return obj1.age > obj2.age;
//        return obj1.age < obj2.age;
        /*
        if (obj1.age > obj2.age) {
            // 5 4
            return NSOrderedDescending;
        }else if(obj1.age < obj2.age)
        {
            // 4 5
            return NSOrderedAscending;
        }else
        {
            return NSOrderedSame;
        }
         */
    }];
NSArray *arr = @[p1, p2, p3, p4];
//     注意:writeToFile只能写入数组中保存的元素都是Foundation框架中的类创建的对象, 如果保存的是自定义对象那么不能写入
    BOOL flag = [arr writeToFile:@"/Users/xiaomage/Desktop/person.plist" atomically:YES];

// 2.从文件中读取一个数组

    NSArray *newArray = [NSArray arrayWithContentsOfFile:@"/Users/xiaomage/Desktop/abc.plist"];
NSMutableArray *arrM = [NSMutableArray array];
[arrM insertObject:@"xcq" atIndex:1];
    NSLog(@"%@", arrM);
    
    NSRange range = NSMakeRange(2, 2);
    NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:range];
    // 插入一组数据, 指定数组需要插入的位置, 和插入多少个
    [arrM insertObjects:@[@"A", @"B"] atIndexes:set];

相关文章

网友评论

      本文标题:NSArray

      本文链接:https://www.haomeiwen.com/subject/desphqtx.html