IOS Object-C 中的数组/字典/枚举/set的总结归纳

next

一:数组

(1): NSArray(不可变数组)

● 初始化数组 (初始化数组最后一个元素必须是nil标志着数组对象的结束。)

NSArray *datas = [NSArray arrayWithObjects:@"1", @"2", nil];

● 获取数组长度

datas.count; 或者 [datas count];

● 根据索引获取数组元素

[Datas objectAtIndex: 0];

● 数组的循环遍历

for(int i  = 0; i < datas.count; i++) {

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

        }

for(NSObject *i in datas) {

            NSLog(@"%@", i);

        }

(2): NSMutableArray(可变数组)

● 初始化数组

NSMutableArray *data = [NSMutableArray arrayWithObjects:@"1", @"2", nil];

NSMutableArray *datas = [NSMutableArray arrayWithCapacity:6]; 

● 添加数组成员

[datas addObject:@"1"];

● 获取数组长度

datas.count; 或 [Datas count];

● 删除数组中的元素

- (void)removeObject:(ObjectType)anObject inRange:(NSRange)range; 删除指定范围内的对应元素

NSRange range =NSMakeRange(0,2);

[datas removeObject:@"2"inRange:range];

- (void)removeObject:(ObjectType)anObject; 删除指定元素

[data removeObject:@"2"];

- (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;删除指定索引位置的元素

[datas removeObjectAtIndex:0];

.

.

.

. 其实还有一些删除功能相关的方法,这里不再一一罗列,具体可以查看NSMutableArray类

● 替换数组中的元素

- (void)replaceObjectAtIndex:(NSUInteger)indexwithObject:(ObjectType)anObject;

[datas replaceObjectAtIndex:0 withObject:@"22"];

二:字典(类似JS中的键值对)

(1)NSDictionary(不可变字典)

● 初始化不可变字典

+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ... NS_REQUIRES_NIL_TERMINATION NS_SWIFT_UNAVAILABLE("Use dictionary literals instead");

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"lle", @"name", @"15", @"age", nil];

特别说明:当然还有其他初始化方法,这里只是总结个人比较喜欢的,具体可以查看NSDictionary类!

获取字典大小

dict.count; 或 [dict count];

● 获取字典中所有的key

NSArray *keys = [dict allKeys];

● 获取字典中所有的value

NSArray *values = [dict allValues];

根据key获取对应的值(利用这点做个循环遍历,当然还有其他循环遍历方法,比如枚举)

- (nullable ObjectType)objectForKey:(KeyType)aKey;

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"lle", @"name", @"15", @"age", nil];

NSArray *keys = [dict allKeys];

for(NSObject *i in keys) {

            NSLog(@"%@:%@", i, [dict objectForKey:i]);

}

(2)NSMutableDictionary(可变字典)

● 初始化可变字典

NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lle", @"name", @"15", @"age", nil];

● 获取字典大小

mutable.count; 或 [mutable count];

● 添加键值对

- (void)setValue:(nullableObjectType)value forKey:(NSString*)key;

- (void)setObject:(ObjectType)anObject forKey:(KeyType)aKey;

[mutableDict setValue:@"008" forKey:@"id"];       

[mutableDict setObject:@"banana" forKey:@"like"];

● 修改键对应的值

mutableDict[@"name"] =@"wang";

● 删除键值对

- (void)removeObjectForKey:(KeyType)aKey;

[mutableDict removeObjectForKey:@"name"];

● 根据key获取对应的值(利用这点做个循环遍历,当然还有其他循环遍历方法,比如枚举)

- (nullableObjectType)objectForKey:(KeyType)aKey;

NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lle", @"name", @"15", @"age", nil];

NSArray *keys = [mutableDict allKeys];

for(NSObject *i in keys) {

            NSLog(@"%@:%@", i, [mutableDict objectForKey:i]);

}

三:set

集合特性

- 互异性:集合中没有完全两个相同的对象,保证数据的唯一性

- 无序性

(1)NSSet(不可变)

初始化NSSet集合

NSSet *set = [NSSetsetWithObjects:@"1",@"2",@"3",nil];

● 获取NSSet集合的大小

set.count; 或 [set count];

● 获取NSSet集合中的对象

NSArray *arr = [set allObjects];

● 判断NSSet集合中是否包含指定对象

- (BOOL)containsObject:(ObjectType)anObject;

[set containsObjects: @"one"];

(2)NSMutableSet(可变)

● 初始化NSMutableSet集合

NSMutableSet *set = [NSMutableSet setWithObjects:@"1", @"2", nil];

● 获取NSMutableSet集合大小

set.count; 或 [set count];

● 向NSMutableSet集合中添加元素

[set addObject:@"3"];

● 向NSMutableSet集合中删除元素

[set removeObject: @"1"];

● 获取NSMutableSet集合中所有元素(借此可做遍历循环)

@property (readonly, copy) NSArray<ObjectType> *allObjects;

NSMutableSet *set = [NSMutableSet setWithObjects:@"1", @"2", nil];

NSArray *arr = [set allObjects];

for(NSObject *i in arr) {

            NSLog(@"%@", i);

}

三:NSEnumerator

简述:

它是个抽象类,没有用来创建实例的公有接口。

像NSArray、NSSet、NSDictionary等集合类均可获取到NSEnumerator。NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项。

●  获取集合中的Enumerator(正向遍历,数组/字典/set都适用)

- (NSEnumerator *)objectEnumerator;

NSArray*arr = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];

NSEnumerator *arrEnumerator = [arr objectEnumerator];

------------------------------------------------------------------------------------------------

NSSet *set = [NSSet setWithObjects:@"set1",@"set2",@"set3",nil];

NSEnumerator *setEnumerator = [set objectEnumerator];

------------------------------------------------------------------------------------------------

NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:@"val1",@"key1",@"val2",@"key2",nil];

NSEnumerator *dictEnumerator = [dict objectEnumerator];

●  获取集合中的Enumerator(反向遍历,只有数组适用)

- (NSEnumerator<ObjectType> *)reverseObjectEnumerator;

NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];

NSEnumerator *arrEnumerator = [arr reverseObjectEnumerator];

●  字典集合中的可以单独获取key的NSEnumerator

- (NSEnumerator *)keyEnumerator;

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"val1", @"key1", @"val2", @"key2", nil];

 NSEnumerator*dictKeys = [dict keyEnumerator];

●  利用NSEnumerator中的nextObject方法做循环遍历

- (nullableObjectType)nextObject;

下边只以字典类型为例子

 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"val1", @"key1", @"val2", @"key2", nil];

NSEnumerator *dictKeys = [dict keyEnumerator];

id oneKey;

while(oneKey = [dictKeys nextObject]){

            NSLog(@"%@: %@", oneKey, [dict objectForKey:oneKey]);

}

●  NSEnumerator循环遍历之for循环(数组/字典/set都适用,下边以数组为例)

NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];

NSEnumerator *arrEnumerator = [arr objectEnumerator];

for(NSString *i in arrEnumerator) {

            NSLog(@"%@", i);

 }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容