美文网首页
iOS官方文档 Foundation篇---NSSet(NSMu

iOS官方文档 Foundation篇---NSSet(NSMu

作者: qianfei | 来源:发表于2019-03-04 16:26 被阅读0次

    话九宸,挥袖风云尽,江山何沉?随逸兴,负手乾坤定,苍黄为轻。

    ——墨倾池

    NSSet

    静态无序的唯一对象集合;

    #创建集合
    
    //创建空集合
    NSSet *set = [NSSet set];
    
    //创建单个元素集合
    NSSet *set1 = [NSSet setWithObject:@"1"];//(1)
    
    //创建多个元素集合
    NSSet *set2 = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"5", nil];//(3,1,4,2,5)
    
    //根据集合内元素个数创建集合
    NSString *values[3];
    values[0] = @"1";
    values[1] = @"2";
    values[2] = @"3";
    NSSet *set4 = [NSSet setWithObjects:values count:2];//(1,2)
    
    //根据集合创建集合
    NSSet *set5 = [NSSet setWithSet:set2];//(3,1,4,2,5)
    
    //根据数组创建集合
    NSArray *array = @[@"1",@"2",@"3",@"4",@"5",@"1",@"2"];
    NSSet *set6 = [NSSet setWithArray:array];//(3,4,5,1,2)
    
    #方法
    //集合中元素总数
    NSInteger count = set2.count;//5
    
    //集合转数组
    NSArray *arr = set2.allObjects;//[3,1,4,2,5]
    
    //确定元素是否存在于集合中,如果是,则返回该元素
    NSString *str = [set2 member:@"2"];//2
    
    //集合中的一个元素
    NSString *str1 = set2.anyObject;
    
    //表示集合内容的字符串,格式为属性列表。
    NSString *str2 = set2.description;//{((3,1,4,2,5))}
    
    //返回一个布尔值,指示接收集中的至少一个对象是否也存在于另一个给定集中。
    BOOL isInter = [set2 intersectsSet:set];//NO
    
    //返回一个布尔值,两个集合相同则返回YES
    BOOL isEqual = [set2 isEqualToSet:set];//NO
    
    //返回一个布尔值,指示接收集中的每个对象是否也存在于另一个给定集中。
    BOOL isSubset = [set2 isSubsetOfSet:set];//NO
    
    //集合内添加给定元素并返回一个新的集合
    NSSet *netSet = [set2 setByAddingObject:@"6"];
    
    //集合内添加给定集合元素并返回一个新的集合
    NSSet *netSet1 = [set2 setByAddingObjectsFromSet:set];
    
    //集合内添加给定数组元素并返回一个新的集合
    NSSet *newSet2 = [set2 setByAddingObjectsFromArray:array];
    
    //集合内每一个对象都会执行方法
    [set2 makeObjectsPerformSelector:@selector(description)];
    [set2 makeObjectsPerformSelector:@selector(hasPrefix:) withObject:@"1"];
    [self.view.subviews magkeObjectsPerformSelector:@selector(removeFromSuperview)];
    
    #遍历
    //正向遍历集合
    NSEnumerator *enumerator = [set2 objectEnumerator];
    NSString *objs;
    while (objs = [enumerator nextObject]) {
      NSLog(@"集合正序值开始打印:%@\n",objs);
    }
    
    //遍历
    [set2 enumerateObjectsUsingBlock:^(id  _Nonnull obj, BOOL * _Nonnull stop) {
      NSLog(@"obj = %@",obj);
    }];
    
    /*
     NSEnumerationOptions
     NSEnumerationConcurrent   //无序遍历
     NSEnumerationReverse      //倒序遍历
     */
    //根据顺序遍历
    [set2 enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, BOOL * _Nonnull stop) {
      NSLog(@"obj = %@",obj);
      if ([obj isEqualToString:@"3"]) {
        //停止遍历
        *stop = YES;
      }
    }];
    
    //返回满足条件的集合
    NSSet *newSet3 = [set2 objectsPassingTest:^BOOL(id  _Nonnull obj, BOOL * _Nonnull stop) {
      return [obj integerValue] > 2;
    }];
    
    //根据遍历顺序返回满足条件的集合
    /*
     NSEnumerationOptions
     NSEnumerationConcurrent   //无序遍历
     NSEnumerationReverse      //倒序遍历
     */
    NSSet *newSet4 = [set2 objectsWithOptions:NSEnumerationReverse passingTest:^BOOL(id  _Nonnull obj, BOOL * _Nonnull stop) {
      return [obj integerValue] > 2;
    }];
    

    NSMutableSet

    动态无序的唯一对象集合(继承自NSSet)

    //创建
    NSArray *array = @[@"1",@"2",@"3",@"4",@"5",@"1",@"2"];
    NSSet *set = [NSSet setWithObject:@"1"];//(1)
    NSMutableSet *mulSet = [NSMutableSet setWithObjects:@"1",@"2",@"3",@"4",@"5", nil];//(3,1,4,2,5)
    
    //集合增加单个元素
    [mulSet addObject:@"6"];
    
    //集合增加多个元素
    [mulSet addObjectsFromArray:array];
    
    //删除集合内单个元素
    [mulSet removeObject:@"1"];
    
    //删除集合内所有元素(清空)
    [mulSet removeAllObjects];
    
    //清空接收集,然后添加另一个给定集中包含的每个对象。
    [mulSet setSet:set];
    
    //从接收集中删除不是另一个给定集的成员的每个对象(取交集)
    [mulSet intersectSet:set];
    
    //删除集合内相同的元素
    [mulSet minusSet:set];
    
    //将另一个给定集合中的每个不存在与目标集合中的的对象添加到接收集和内(取并集)
    [mulSet unionSet:set];
    

    欢迎留言指正,会持续更新!!!

    相关文章

      网友评论

          本文标题:iOS官方文档 Foundation篇---NSSet(NSMu

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