NSSet 用法

//集合NSSet

//集合也是储存对象,和字典一样也是无序存储

//集合中里面的元素不能重复

//集合里面的元素可以随机取出

//用数组放到集合中

NSArray *a10 = @[p1 , p2 , p3 , p4 , p5];

NSSet *set1 = [NSSet setWithArray:a10];

//给集合放一个对象

NSSet *set2 = [NSSet setWithObject:p1];

//给集合放多个对象

//如果集合里面的元素相同了,会覆盖原来的那个

NSSet *set3 = [NSSet setWithObjects:p1 , p2 , p3 , p4 , nil];

//给集合放集合

NSSet *set4 = [NSSet setWithSet:set2];

NSLog(@"%@" , set4);

//  要打印集合中所有元素, 需要借助数组来完成

// 把集合里面的元素取出来 放大数组里面就可以循环打印

NSArray *array01 = [set3 allObjects];

for (int i = 0; i < [array01 count]; i++) {

NSLog(@"%@" , [array01 objectAtIndex:i]);

}

//既然集合里面的 元素是无序的,那么要想从集合中取出一个元素,这个元素肯定是随机的

//从集合里面随机取出一个元素

NSLog(@"*****************************************");

Person *p01 = [set3 anyObject];

NSLog(@"%@" , p01);

//能够放相同元素的集合

//NSCountedSet 集合中可以放相同的元素,并且能算出一个元素相同了多少次,也就是重复了多少次

NSCountedSet *set5 = [[NSCountedSet alloc] initWithObjects:p1 , p1 , p3 , p4 , p5  , p3 , p3 , p2  , p4 , p2 , nil];

//count 按照种类来分

NSLog(@"%ld" , [set5 count]);

//对集合中某一个元素种类计数

NSLog(@"%ld" , [set5 countForObject:p3]);

//可变集合

NSMutableSet *mset1 = [NSMutableSet setWithObjects:p5 , p3 , p2 , nil];

// 删除某个元素

[mset1 removeObject:p3];

[mset1 removeAllObjects];//删除多个元素

NSLog(@"%@" , mset1);

//三大容器总结

/*

一、相同点

都是容器 都能存储多个元素,存储的元素都必须是对象

二、不同点

1、特点

数组存储对象时有序的,元素可以重复

字典存在一一对应关系,键值对,key值必须唯一,不能重复

集合存储的院士是无序的,而且元素之间存在互异性

2、取值方面

数组 通过下标取值

字典 通过键值key进行取值

集合 通过anyObject随机取值

3、能否利用for循环

数组 直接利用for循环

字典 借助allkeys数组进行for循环遍历

集合 借助一个数组,把set集合中所有元素放进这个数组中

*/

NSArray *array02 = @[p2 , @"a" , p2 , @"b" , p1];

//循环打印数组所有元素,只打印字符串,不打印person对象

//isKindOfClass判断一个对象是否是某一类,或者这个类的子类

for (int i = 0; i < [array02 count];i++) {

id p = [array02 objectAtIndex:i];

//判断p是否是NSString类

if ([p isKindOfClass:[NSString class]]) {

// 如果是字符串久打印

NSLog(@"%@" , p);

}

}

//isMemberOfClass判断一个对象是否是一个类,不会判断子类

Student *s1 = [[Student alloc] initWithName:@"ddfdfjk" andAge:45];

Student *s2 = [[Student alloc] initWithName:@"dsfu" andAge:456];

NSArray *array03 = @[p2 , s1 , p2 , s2 , p1];

for (int i = 0; i < [array03 count];i++) {

id q = [array03 objectAtIndex:i];

//判断p是否是NSString类

if ([q isMemberOfClass:[Person class]]) {

// 如果是字符串久打印

NSLog(@"%@" , q);

}

}

时间: 2024-10-29 06:26:25

NSSet 用法的相关文章

iOS开发-OC篇-NSSet,NSNumber

最近回顾了OC的一些基本知识,发现确实遗忘了很多重要的东西,今天整理了一些小的知识点,和大家分享一下. iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱和拆箱,来进行OC对象操作. 1.NSNumber包装类 1>  普通初始化 NSNumber * num1 = [[NSNumber alloc] initWithInt:20]; NSNumber * num2 = [NSNumber numberWithChar:'a']; 2>字面量初始化 NSNumber * num3 =

NSSet常用用法

//集合初始化         NSArray *array = [NSArray arrayWithObjects:@"aa", @"bb", @"cc", nil];         NSSet *se = [NSSet setWithArray:array];         NSLog(@"%@", se);         //集合里面只有一个元素         NSSet *set = [NSSet setWit

用法总结:NSArray,NSSet,NSDictionary-备用

Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序集合(数组)NSSet 用于对象无序集合      (集合)NSDictionary用于键值映射(字典)以上三种集合类是不可变的(一旦初始化后,就不能改变) 以下是对应的三种可变集合类(这三种可变集合类是对应上面三种集合类的子类):NSMutableArrayNSMutableSet  可修改的集合.主要用于集合运算(并集,交集,差集)NSMutableDict

Objective-C:NSSet和NSMutbaleSet的用法

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSSet *set1 = [NSSet setWithObjects:@"a", @"b", @"c", @"d", nil]; NSSet *set2 = [[NSSet alloc] initWithObjects:@&q

NSSet、NSMutableSet基本用法

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源码传送:http://dwz.cn/Nret1 在Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素

NSArray,NSMutable和NSSet,NSMutableSet和NSDictionary,NSMutableDictionary用法

开始编写应用程序的代码时,可以利用大量的 Objective-C 框架.其中,为所有应用程序提供基本服务的 Foundation 框架尤为重要.Foundation 框架包括表示基本数据类型的值类(如字符串和数字)以及用于储存其他对象的集 (collection) 类.ToDoList 应用程序中的大量代码都可以依靠值类和集类来编写. 值对象 Foundation 框架提供了为字符串.二进制数据.日期与时间.数字以及其他值产生值对象的类. 值对象是指封装了基本值(属于 C 数据类型)且提供与该值

iOS block的用法

转自:http://www.cnblogs.com/jy578154186/archive/2012/09/30/2709130.html 本文来自台湾的某开发人员的博客,被墙,感觉讲的比较易懂,所以引过来.文字简体化了,原来是繁体,变数=变量,这个注意一下. 本文的顺序是层层深入的,要想简单的了解,只看X.1 初探Block就好了 本章学习目标: 1. 了解何谓block. 2. 了解block的使用方法. Block 是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程

GCD和NSOperation 的概念,用法及之间的区别

CGD与NSOperation的区别 gcd是基于c的底层api,NSOperation属于object-c类.相对于gcd:1,NSOperation拥有更多的函数可用,具体查看api.2,在NSOperationQueue中,可以建立各个NSOperation之间的依赖关系.3,有kvo,可以监测operation是否正在执行(isExecuted).是否结束(isFinished),是否取消(isCanceld).4,NSOperationQueue可以方便的管理并发.NSOperatio

iOS中Block的基础用法

本文简介 本章不会对Block做过多的实现研究.只是讲解基本的用法.纯粹基础知识.结合实际项目怎么去做举例.Block使用场景,可以在两个界面的传值,也可以对代码封装作为参数的传递等.用过GCD就知道Block的精妙之处. Block简介 Block是一种比较特殊的数据类型.它可以保存一段代码,在合适的时候取出来调用. Block的修饰 ARC情况下1.如果用copy修饰Block,该Block就会存储在堆空间.则会对Block的内部对象进行强引用,导致循环引用.内存无法释放.解决方法:新建一个