一:数组
(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);
}