首页 > 代码库 > NSArray方法亲测

NSArray方法亲测

#import <Foundation/Foundation.h>
NSInteger sortType(id st,id str,void *cha)
{
    NSString *s1 = (NSString *)st;
    NSString *s2 = (NSString *)str;
    
    
    if(s1.length > s2.length)
    {
        return NSOrderedAscending;
    }else if(s1.length < s2.length)
    {
        return NSOrderedDescending;
    }
    
    return NSOrderedSame;
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray *arr = [NSArray alloc];
        arr = [arr init];//数组的创建与初始化
        NSLog(@"%@",arr);
        NSArray *arr1 = [[NSArray alloc] initWithObjects:@"abc", nil];//用一个对象初始化
        NSLog(@"%@",arr1);
        NSArray *arr2 = [[NSArray alloc] initWithObjects:@"abc",@"def",@"abc", nil];//用多个对象初始化
        NSLog(@"%@",arr2);
        NSArray *arr3 = [[NSArray alloc] initWithArray:arr1];//从已有数组初始化
        NSLog(@"%@",arr3);
        
        NSLog(@"%lu",[arr2 count]);//返回数组的成员数
        NSLog(@"%@",[arr2 objectAtIndex:1]);//返回数组某个下标的成员
        NSLog(@"%@",[arr2 firstObjectCommonWithArray:arr2]);//返回数组的第一个成员
        NSLog(@"%@",[arr2 lastObject]);//返回数组的最后一个成员
        [arr2 arrayByAddingObject:@"ghi"];//向数组添加元素,但是不可变数组成员数不能增加
        NSLog(@"%@",arr2);
        [arr2 arrayByAddingObjectsFromArray:arr1];
        NSLog(@"%@",arr2);
        NSLog(@"%@",[arr2 componentsJoinedByString:@"123"]);//以某个分隔符把数组连接成字符串
        NSString *str = @"123,456,789";
        NSLog(@"%@",[str componentsSeparatedByString:@","]);//以某个分隔符把字符串分割成数组
        if ([arr2 containsObject:@"abc"])//判断一个数组中是否存在@"xxx"或另一个数组,数组必须地址和内容都相同
        {
            NSLog(@"%@",arr1);
        }
        NSArray *arr4 = [arr2 objectAtIndex:2];
        if ([arr2 containsObject:arr4])
        {
            NSLog(@"%@",arr4);
        }
        NSLog(@"%@",[arr2 description]);//对数组中对象的描述,可以输出数组中的对象(待进一步确定)
        //NSLog(@"%@",[arr2 descriptionWithLocale:arr1]);
        NSLog(@"%@",[arr2 firstObjectCommonWithArray:arr1]);//两个数组的第一个元素是否相同,如果相同,则返回 数组中,第一个元素的字符串,反之,返回null 对象
        if (NSNotFound == [arr2 indexOfObject:@"abc"])//判断制定的anObject 对象是否存在数组中如果存在返回,对象所在的下标
        {
            NSLog(@"不再数组中!");
        }
        NSLog(@"%lu",(unsigned long)[arr2 indexOfObject:@"def"]);
        NSArray *arr5 = [[NSArray alloc] initWithObjects:@"abc",@"def",@"abc", nil];
        if ([arr2 isEqualTo:arr5])//比较两个数组是否相同 ,数组长度相同,并且相同位置上的元素也相同。
        {
            NSLog(@"YES!");
        }
        NSEnumerator *enu = [arr2 objectEnumerator];//使用数组返回一个 NSEnumerator 对象,这个对象类似与一个指针,可以用来遍历 整个数组 指针从前向后遍历
        id obj;
        while ((obj = enu.nextObject))
        {
            NSLog(@"+%@",obj);
        }
        enu = [arr2 reverseObjectEnumerator];//返回一个NSEnumerator 对象,这个对象类似一个指针,可以用来遍历真个数据,所不同的是,这个指针,是从后向前遍历
        while ((obj = enu.nextObject)) {
            NSLog(@"-%@",obj);
        }
        NSArray *arr6 = [NSArray arrayWithObjects:@"alksfj",@"sfhidhf",@"d",@"djlfjddfj",@"ksdf", nil];
        NSLog(@"%@",[arr6 sortedArrayUsingFunction:sortType context:nil]); // 进行数组的排序,这个方法类似苹果实现了一个简单的 排序方法。但是实现的规则需要自己进行处理。
        NSData *dat = [arr6 sortedArrayHint];
        NSLog(@"%@",[arr6 sortedArrayUsingFunction:sortType context:nil hint:dat]);//和上面的方法类似,也是苹果用来进行排序的。所不同的是,需要传入一个NSData 的数据。
        //NSLog(@"%@",[arr2 firstObjectCommonWithArray:arr2]);
    }
    return 0;
}

NSArray方法亲测