美文网首页
24章:Collection 类

24章:Collection 类

作者: 帽子和五朵玫瑰 | 来源:发表于2018-05-31 09:36 被阅读0次

    Collection类

    Collection类的实例用于保存指向其他对象的指针。

    24.1NSSet/NSMutableSet

    NSSet对象所包含的“内容”是无序的。而且在一个NSSet对象中,某个特定的对象只能出现一次。

    NSSet对象的最大用处就是检查某个对象是否存在。例如,你有一组儿童不宜进入的网站链接,再为小孩打开某个网页时,最好先查看相应的网页是否在这个儿童不宜组里。NSSet对象完成此类任务的速度比数组快的对。

    它也有NSMutableSet

    NSSet对象中的对象是无序的,所以不能通过索引来访问,只能向NSSet对象查询某个对象是否寻找。可以使用下面的方法来查询

    -(BOOL) containsObject :(id)x;
    

    NSObject类定义了一个名为 isEqual:的方法。日过程序要检查这两个对象是否相等,就可以使用isEqual方法

    -(BOOL)isEqual : (id) other
    {
        return (self == other);
    }
    

    在苹果公司提供的类中,有些覆盖率isEqual:方法,例如NSString。覆盖后的方法会比较字符串中的字符。

    equal:相等的 字符相等

    identical:相同的,同一个对象,地址相同。

    24.2NSDictionary/NSMutableDictionary

    键值对(key value pair)。健通常是字符串,值可以是任意类型的对象。以键为索引。·

    24.3不可修改对象

    虽然对外声明的是NSArray,但实际创建的是NSMutableArray

    使用不可修改对象可以节约内存提高性能。因为它永远无序拷贝。

    24.4数组排序

    -(void)sortUsingDexcriptors:(NSArray *)sortDescriptors;
    
    NSSortDescriptor *lastAsc = [NSSortDescriptor sortDescriptorWithKey:@"lastName"
                                                              ascending:YES];
    
    NSSortDescriptor *voa = [NSSortDescriptor sortDescriptorWithKey:@"valueOfAssets"
                                                              ascending:YES];
    
    NSSortDescriptor *eid = [NSSortDescriptor sortDescriptorWithKey:@"employeeID"
                                                              ascending:YES];
    
    [employees sortUsingDexcriptors:@[voa,eid]];
    
    
    

    24.5过滤

    对Collection进行过滤的时候,程序将对collection对象和一条逻辑语句进行比较,得到一个合成的collection,这个collection只包含满足这条语句的对象。

    Foundation中有个NSPredicate的类。NSPredicate对象可以包含一条语句,其运算结果可以为“真”或“假”

    -(void)filterUsingPredicate:(NSPredicate *)predicate;
    //NSArray有一个名为filteredArrayUsingPredicate:方法,可以创建一个新的数组,能够“满足”传入的NSPredicate对象的对象
    -(NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate;
    
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"holder.valueOfAsset>70"];
    NSArray *toBeReclaimed = [allAssets filteredArrayUsingPredicate:predicate];
    

    Collection对象与所有权

    向Collection对象中加入某个对象是,collection对象会成为该对象的拥有方,如果从collection对象中移除改对象,collection对象就不再是该对象的拥有方了。

    C语言基本类型

    Collection对象只能保存对象,如果要保存float,int变量或指向结构的指针,则可以先将这些C语言基本类型封装成对象,再存入collection对象。

    NSMutableArray *list = [[NSMutableArray alloc]init];
    [list addObject:@4];
    [list addObject:@5.6];
    

    Collection对象和list

    本章所结束的Collectuion对象都不能保存nil,如果要将nil加入。则可以用NSNull类。

    [list addObject:[NSNull null]];
    

    相关文章

      网友评论

          本文标题:24章:Collection 类

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