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

IOS Object-C 中的数组/字典/枚举/set的总结归纳_第1张图片
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 *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 *)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);

 }

你可能感兴趣的:(IOS Object-C 中的数组/字典/枚举/set的总结归纳)