• NSArray


    -----创建数组 -----
        //NSArray *array = [[NSArray alloc] initWithObjects:@"One",@"Two",@"Three",@"Four",nil];
        NSArray *monthNames = [NSArray arrayWithObjects:@"January",@"February",@"March",@"April",@"May",nil];

        self.dataArray = array;
        [array release];

        NSLog(@"self.dataArray count is:%d",[self.dataArray count]);

        NSLog(@"self.dataArray index 2 is:%@",[self.dataArray objectAtIndex:2]);

    注:初始化一个数组时,经常使用initWithObject  和 initWithObjects没有s的表示使用一个指针初始化NSArray,初始化后,这个NSArray的实例只有一个数据,所以在调用没有s的函数的时候是不能以nil结束的;但是有s的就不一样了,哪怕只有一个数据,或者没有数据,必须使用一个nil结束

    -----数组所包含对象个数 -----
    NSLog(@"self.dataArray cound:%d",[self.dataArray count]);

    NSArray中去除重复的元素

    有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型。今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下。

    1.利用NSDictionary的AllKeys(AllValues)方法
    可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的。
    示例代码:

        NSArray *arr = @[@111,@222,@111];

        NSMutableDictionary *dict = [NSMutableDictionary dictionary];

        for (NSNumber *number in arr) {

            [dict setObject:number forKey:number];

        }

        NSLog(@"%@",[dict allValues]);

    输出结果为:

    2013-05-21 12:03:49.449 test1[4377:c07] (

        111,

        222

    )

     
    2.利用NSSet的AllObjects方法
    这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。
    示例代码:

        NSArray *arr = @[@111,@222,@111];

        NSSet *set = [NSSet setWithArray:arr];

        NSLog(@"%@",[set allObjects]);

    输出结果为:

    2013-05-21 12:06:26.508 test1[4547:c07] (

        111,

        222

    )

     

     

     

     

    排序的去重

    很多时候可能会遇到需要去除NSArray重复的元素,用了很多方法。

    最方便快捷的是NSSet.但是NSSet去重后有时候数组元素的顺序会

    打乱。于是换了另外一种方法如下: 

        NSMutableArray *categoryArray = [[NSMutableArray allocinit];

        for (unsigned i = 0; i < [nameArray count]; i++){

            if ([categoryArray containsObject:[nameArray objectAtIndex:i]] == NO){

                [categoryArray addObject:[nameArray objectAtIndex:i]];

            }

            

        }

    顺序就不会乱了。

  • 相关阅读:
    约瑟夫环-我的解答与迷宫
    数据结构实验一
    typedef struct 是什么意思
    编程名言名句
    创建单链表
    离散实验一
    Angela Merkel poised for record poll win and historic third term
    我的生活计划-贵在执行,贵在坚持
    考研经验
    2010年河南省普通高校招生本科一批院校 平行投档分数线(理科)
  • 原文地址:https://www.cnblogs.com/ygm900/p/2867478.html
Copyright © 2020-2023  润新知