美文网首页
Foundation基础类库容器

Foundation基础类库容器

作者: wps_pro | 来源:发表于2017-05-09 16:58 被阅读0次

    基础类库:容器

    1.NSArray

    //类方法数组创建

    NSArray *array1 = [NSArray arrayWithObject:@"obj"];
    NSArray *array2 = [NSArray arrayWithObjects:@"obj1", @"obj2", @"obj3", nil];
    NSArray *array3 = [NSArray arrayWithArray:array2];
    

    //实例方法创建数组

    NSArray *array4 = [[NSArray alloc] initWithObjects:@"AAA", @"bbb", nil];      
     NSLog(@"array4 :%@", array4);
    

    //数组个数

    NSLog(@"array3 count :%d", [array3 count]);
    

    //访问元素

    NSLog(@"obj at index :%@", [array2 objectAtIndex:2]);
    

    //追加(返回新的array对象)

    NSArray *array5 = [array3 arrayByAddingObject:@"ccc"];   
    NSLog(@"array5 :%@", array5);
    

    //根据指定的字符串连接数组元素

    NSString *joinString1 = [array5 componentsJoinedByString:@"|"];       
    NSLog(@"joinString :%@",joinString1);
    

    //是否包含指定对象

    NSLog(@"isContains :%d", [array5 containsObject:@"obj2"]);
    

    //查找某个对象所在索引

    NSLog(@"indexOfObject :%d",[array5 indexOfObject:@"obj3"]);
    

    //最后一个元素

    NSLog(@"lastObejct :%@", [array5 lastObject]);
    

    //遍历数组

    for(id element in array5) {
    NSLog(@"element :%@", element);
    }
    

    2.NSMutableArray

    添加元素.[mutableAarray  addObject:@"hello"];
    删除元素:[mutableAarray removeObject:@"hello"];
    删除指定位置的元素[mutableAarray removeObjectAtIndex:2];
    删除最后一个元素[mutableAarray removeLastObject];
    删除所有元素.[mutableAarray removeAllObjects];
    增加一些元素.[mutableAarray  addObject:@"hello"];
    [mutableAarray  addObject:@"world"];
    [mutableAarray  addObjectsFromArray:array];
    插入元素,指定位置.[mutableAarray insertObject:@"nihao" atIndex:2];
    替换元素[mutableAarray replaceObjectAtIndex:2 withObject:@"ping"]
    交换元素[mutableAarray exchangeObjectAtIndex:0 withObjectAtIndex:2];
    快速便利for (id str in mutableAarray)  {
    NSLog(@"%@",str);
    }
    

    3.NSDictionary

    //创建词典
    NSDictionary *dictionary=[NSDictionary dictionaryWithObjectsAndKeys:@"wujy",@"name",@29,@"age",nil];
    NSInteger Count=[dictionary count];
    NSLog(@"词典的个数为%ld",Count);
    //得到词典中的所有key
    NSEnumerator *enumeratorkey=[dictionary keyEnumerator];
    for (NSObject *obj in enumeratorkey) {
    NSLog(@"key为:%@",obj);
    NSLog(@"通过key找到value值为:%@",[dictionary objectForKey:obj]);
    }
    //得到词典中的所有value值
    NSEnumerator *enumeratorvalue=[dictionary objectEnumerator];
    for (NSObject *obj in enumeratorvalue) {
    NSLog(@"value为:%@",obj);
    }
    //简便的方式创建 key排前面value排后面
    NSDictionary *newDictionary=@{@"name":@"wujy",@"age":@29};
    NSArray *keyArray=[newDictionary allKeys];
    for (NSObject *obj in keyArray) {
    NSLog(@"key的值为:%@",obj);
    }
    NSArray *valueArray=[newDictionary allValues];
    for (NSObject *obj in valueArray) {
    NSLog(@"value的值为:%@",obj);
    }
    //blocks插件
    NSDictionary *blockDictionary=[NSDictionary dictionaryWithObjects:[[NSArray alloc] initWithObjects:@3,@15,@29,nil] forKeys:[[NSArray alloc] initWithObjects:@"IOS",@"work",@"age",nil]];
    //遍历
    [blockDictionary bk_each:^(id key, id obj) {
    NSLog(@"使用blocks的key为:%@",key);
    NSLog(@"对应的value为:%@",obj);
    }];
    //过滤 只在第一个符合条件时就停止
    NSDictionary *matchDictionary=[blockDictionary bk_match:^BOOL(id key, id obj) {
    BOOL select=[obj intValue]<10?YES:NO;
    return select;
    }];
    NSLog(@"match符合的项为:%@",matchDictionary);
    //过滤
    NSDictionary *selectDictionary=[blockDictionary bk_select:^BOOL(id key, id obj) {
    BOOL select=[obj intValue]>10?YES:NO;
    return select;
    }];
    NSLog(@"select符合的项为%@",selectDictionary);
    //反向过滤
    NSDictionary *rejectDictionary=[blockDictionary bk_reject:^BOOL(id key, id obj) {
    BOOL select=[obj intValue]>10?YES:NO;
    return select;
    }];
    NSLog(@"reject符合的项为%@",rejectDictionary);
    //对各个项进行修改
    NSDictionary *mapDictinary=[blockDictionary bk_map:^id(id key, id obj) {
    return [NSNumber numberWithInt:[obj intValue]+1];
    }];
    NSLog(@"map修改后的项为%@",mapDictinary);
    //是否符合条件 返回bool
    BOOL isSelected=[blockDictionary bk_any:^BOOL(id key, id obj) {
    BOOL select=[obj intValue]>20?YES:NO;
    return select;
    }];
    NSLog(@"%d符合条件",isSelected);
    //判断是否所有的项都符合这个条件
    BOOL allSelected=[blockDictionary bk_all:^BOOL(id key, id obj) {
    BOOL select=[obj intValue]>20?YES:NO;
    return select;
    }];
    NSLog(@"%d符合条件",allSelected);
    //判断是否所有的项都不符合这个条件
    BOOL noneSelected=[blockDictionary bk_none:^BOOL(id key, id obj) {
    BOOL select=[obj intValue]>50?YES:NO;
    return select;
    }];
    NSLog(@"%d符合条件",noneSelected);
    

    4.NSMutableDictionary

    //创建一个nsmutabledictionary
    NSMutableDictionary *mutableDictionary=[NSMutableDictionary dictionaryWithCapacity:3];
    [mutableDictionary setObject:@"wujy" forKey:@"name"];
    [mutableDictionary setObject:@"cnblogs.com/wujy" forKey:@"webName"];
    [mutableDictionary setObject:@29 forKey:@"age"];
    //得到词典中的所有key
    NSEnumerator *enumeratorkey=[mutableDictionary keyEnumerator];
    for (NSObject *obj in enumeratorkey) {
    NSLog(@"key为:%@",obj);
    NSLog(@"通过key找到value值为:%@",[mutableDictionary objectForKey:obj]);
    }
    //删除其中一个key
    [mutableDictionary removeObjectForKey:@"name"];
    NSLog(@"删除name的key以后值:%@",mutableDictionary);
    [mutableDictionary removeAllObjects];
    NSLog(@"删除所有以后,可变词典个数为%ld",[mutableDictionary count]);
    //blocks
    //过滤
    NSMutableDictionary *newmutableDictionary=[NSMutableDictionary dictionaryWithDictionary:@{@"IOS":@3,@"work":@13,@"age":@29}];
    [newmutableDictionary bk_performSelect:^BOOL(id key, id obj) {
    BOOL select=[obj intValue]>10?YES:NO;
    return select;
    }];
    NSLog(@"过滤后的可变词典为(29,13)%@",newmutableDictionary);
    //取反过滤
    [newmutableDictionary bk_performReject:^BOOL(id key, id obj) {
    BOOL select=[obj intValue]>20?YES:NO;
    return select;
    }];
    NSLog(@"取反过滤的可变词典为(13)%@",newmutableDictionary);
    //修改各个项的结果
    [newmutableDictionary bk_performMap:^id(id key, id obj) {
    return @([obj intValue]+1);
    }];
    NSLog(@"修改后的可变词典为(14)%@",newmutableDictionary);
    

    5.NSSet

    集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。
    集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。

    1NSSet *set= [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2[setcount];//返回集合中对象的个数
    判断集合中是否拥有某个元素
    1//判断集合中是否拥有@“two”2BOOL ret = [setcontainsObject:@"two"];
    判断两个集合是否相等
    1NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2//判断两个集合是否相等3BOOL ret = [setisEqualToSet:set2];
    判断set是否是set2的子集合
    1NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil];2//判断set是否是set2的子集合3BOOL ret = [setisSubsetOfSet:set2];
    集合也可以用枚举器来遍历
    1//集合也可以用枚举器来遍历2NSEnumerator * enumerator = [setobjectEnumerator];3NSString *str;4while(str =[enumerator nextObject]) {5……6}
    通过数组来初始化集合(数组转换为集合)
    1NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2NSSet *set= [[NSSet alloc] initWithArray:array];
    集合转换为数组
    1NSArray * array2 = [setallObjects];
    ###6.NSMutableSet
    1//可变集合NSMutableSet2NSMutableSet *set=[[NSMutableSet alloc]
    init];3[setaddObject:@"one"];4[setaddObject:@"two"];5[setaddObject:@"two"];//如果添加的元素有重复,实际只保留一个
    删除元素
    1//删除元素2[setremoveObject:@"two"];3[setremoveAllObjects];
    将set2中的元素添加到set中来,如果有重复,只保留一个
    1//将set2中的元素添加到set中来,如果有重复,只保留一个2NSSet
    * set2 = [[NSSet alloc] initWithObjects:@"two",@"three",@"four",
    nil];3[setunionSet:set2];
    删除set中与set2相同的元素
    1[setminusSet:set2];
    3、指数集合(索引集合)NSIndexSet
    1//指数集合(索引集合)NSIndexSet2NSIndexSet * indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1,3)];//集合中的数字是123
    根据集合提取数组中指定位置的元素
    1//根据集合提取数组中指定位置的元素2NSArray
    * array = [[NSArray alloc]
    initWithObjects:@"one",@"two",@"three",@"four", nil];3NSArray * newArray
    = [array objectsAtIndexes:indexSet];//返回@"two",@"three",@"four"
    

    4、可变指数集合NSMutableIndexSet

    1NSMutableIndexSet *indexSet =[[NSMutableIndexSet alloc] init];2[indexSet
    addIndex:0]3[indexSet addIndex:3];4[indexSet
    addIndex:5];5//通过集合获取数组中指定的元素6NSArray *array = [[NSArray alloc]
    initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",
    nil];7NSArray *newArray = [array
    objectsAtIndexes:indexSet];//返回@"one",@"four",@"six"
    

    7.NSPointMap

    ......

    相关文章

      网友评论

          本文标题:Foundation基础类库容器

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