// _ooOoo_
// o8888888o
// 88" . "88
// (| -_- |)
// O\ = /O
// ____/`---'\____
// . ' \\| |// `.
// / \\||| : |||// \
// / _||||| -:- |||||- \
// | | \\\ - /// | |
// | \_| ''\---/'' | |
// \ .-\__ `-` ___/-. /
// ___`. .' /--.--\ `. . __
// ."" '< `.___\_<|>_/___.' >'"".
// | | : `- \`.;`\ _ /`;.`/ - ` : | |
// \ \ `-. \_ __\ /__ _/ .-` / /
// ======`-.____`-.___\_____/___.-`____.-'======
// `=---='
//
// .............................................
// 佛祖保佑 永无BUG
-------------
NSArray的初始化方法
//NSArray的初始化方法
NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
//便利构造器
NSArray *arr1 = [NSArray arrayWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
//字面量
NSArray *arr2 = @[@"如花",@"石榴姐姐",@"凤姐"];
获取数组内数据个数
NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
NSLog(@"%ld",[arr count]); //3
访问数据
NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
//访问数据
NSLog(@"%@",[arr objectAtIndex:1]); //吴彦祖
//字面量
NSLog(@"%@",arr[1]);
数组插入数据和插入数组
NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
//数组插入数据
NSLog(@"%@",[arr arrayByAddingObject:@"曾志伟"]);
//数组插入数组
NSLog(@"%@",[arr arrayByAddingObjectsFromArray:arr2]);
判断数组中是否包含某一个给定的对象
NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
if ([arr containsObject:@"刘德华"]) {
NSLog(@"有"); //有
}
获取数组元素对应的索引
NSArray *arr = [[NSArray alloc] initWithObjects:@"刘德华",@"吴彦祖",@"夏二狗", nil];
//获取数组元素对应的索引
NSLog(@"%ld",[arr indexOfObject:@"吴彦祖"]);
//获取数组最后一个元素
NSLog(@"%@",[arr lastObject]);
数组内的数据以自定字符连接
//数组内的数据以自定字符连接
NSString *str = [arr componentsJoinedByString:@","];
NSLog(@"%@",str);
按照给定的字符串进行截取,将截取的多段字符串放入数组中
NSString *string = @"www.baidu.com";
NSArray *arr = [string componentsSeparatedByString:@","];
NSLog(@"%@",arr);
小练习
截取下面网址的图片地址 然后用字符串拼接起来
NSString *str = @"http://www.aldhf.com/huasf.jpg&http://www.sghalg.cpm/as/asfj.jpg&http://www.sgladf.com/asf.jpg";
NSArray *arr = [str componentsSeparatedByString:@"&"];
NSLog(@"%@",arr);
NSString *str2 = @"";
for (int i =0; i < [arr count]; i++) {
str2 = [str2 stringByAppendingString:arr[i]];
}
NSLog(@"%@",str3);
可变数组NSMutableArray
NSMuta����ableA����a��rray是OC中的可变数组,NSM����utableA����arr��ay的父类是NSArray, 具有NSArray所有的方法,同时在NSA����a��rray的基础上添加了对⾃自⾝身对象增删改的操作。
初始化方法
//初始化方法
NSMutableArray *murray = [[NSMutableArray alloc] initWithObjects:@"marry",@"mark",@"dive", nil];
//便利构造器
NSMutableArray *murray1 = [NSMutableArray arrayWithCapacity:0];
可变数组的添加
//数组中添加一个对象
[murray addObject:@"timo"];
NSLog(@"%@",murray);
可变数组的插入
//数组中指定位置插入一个对象
[murray insertObject:@"hehe" atIndex:1];
NSLog(@"%@",murray);
可变数组的移除
//从数组中移除一个对象
[murray removeObject:@"timo"];
NSLog(@"%@",murray);
//移除数组中最后的对象
[murray removeLastObject];
NSLog(@"%@",murray);
//移除数组中所有的元素
[murray removeAllObjects];
NSLog(@"%@",murray);
//数组中移除指定位置的元素
[murray removeObjectAtIndex:2];
NSLog(@"%@",murray);
可变数组的替换和交换
//使用指定的对象替换指定位置的对象
[murray replaceObjectAtIndex:1 withObject:@"demaxiya"];
NSLog(@"%@",murray);
//交换指定的两个下标对应的对象
[murray exchangeObjectAtIndex:0 withObjectAtIndex:2];
NSLog(@"%@",murray);
小练习
//用上面的替换做冒泡排序
NSMutableArray *muarry = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
NSNumber * num = [NSNumber numberWithInt:arc4random() %100];
[muarry addObject:num];
}
for (int i = 0; i < [muarry count] - 1; i++) {
for (int j = 0; j < [muarry count] - 1 -i; j++) {
if ([[muarry objectAtIndex:j] intValue] > [[muarry objectAtIndex:(j + 1 )] intValue]) {
[muarry exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
}
}
}
NSLog(@"%@",muarry);
字典NSDictionary
字典是一个⽆无序的集合,⽤用来存储具有一一对应关系的数 据。 字典中存储的每一个对象都是一对键值对,键值对包含两 个部分key��和��al��e,ke��与��al��e的值都是对象类型。
特点:与数组不同,字典靠ke��存取元素。
ke��与��al��e必须都是对象类型。
字典中键值对的存储是无序的。
字典分为两种类型不可变字典(NSDic��iona����),可变字典 (NSM����ableDic��iona����)。
初始化
//初始化 value - key
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"dema",@"name1",@"hangbin",@"name2",@"zhaoxing",@"name3", nil];
//便利构造器
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"dema",@"name1",@"hangbin",@"name2",@"zhaoxing",@"name3", nil];
//字面量key - value
NSDictionary *dic2 = @{@"name1":@"zhaoxin",@"name2":@"nuoshou",@"jianshen":@"name3"};
获取相应的值
//获取所有的key
NSArray *keyArray = [dic allKeys];
NSLog(@"%@",keyArray);
//获取所有的value
NSArray *valueArray = [dic allValues];
NSLog(@"%@",valueArray);
//字典只能通过key取值
NSLog(@"%@",[dic objectForKey:@"name1"]);
小练习
//小练习 按 [key]:[value]格式输出
NSDictionary *testDic = [NSDictionary dictionaryWithObjectsAndKeys:@"盖伦",@"德玛西亚之力",@"嘉文",@"德玛西亚皇子",@"赵信",@"德邦总管",@"拉克丝",@"光辉女郎",@"薇恩",@"暗夜猎手",@"奎因",@"德玛西亚之翼",@"泰隆",@"刀锋之影",@"德莱文",@"荣耀行刑官",@"德莱厄斯",@"诺克萨斯之手",@"卡特琳娜",@"不祥之刃",@"凯南",@"狂暴之心",@"提莫",@"迅捷斥候",@"兰博",@"机械公敌",@"塔姆",@"河流之王",@"乐芙兰",@"诡术妖姬",@"莫甘娜",@"堕落天使",@"亚索",@"疾风之刃", nil];
NSArray *KeyArr = [testDic allKeys]; //获取key的值
//NSArray *ValueArr = [testDic allValues];
for (int i = 0; i < [KeyArr count]; i++) {
// NSString * key = [KeyArr objectAtIndex:i]; //输出第i个key
// NSLog(@"[%@]:[%@]",[KeyArr objectAtIndex:i ],[testDic objectForKey:Key]); //按照输出的key值找value
NSLog(@"[%@]:[%@]",[KeyArr objectAtIndex:i],[testDic objectForKey:[KeyArr objectAtIndex:i]]);
}
可变字典
继承了不可变字典的所有方法 同时 在其基础上添加了 “增加”,“修改”,“删除”的操作。
初始化方法
//初始化方法
NSMutableDictionary *mudic = [[NSMutableDictionary alloc] initWithCapacity:10];
//便利构造器
NSMutableDictionary *mudic1 = [NSMutableDictionary dictionaryWithCapacity:10];
//字面量
NSMutableDictionary *name = [@{@"key1":@"frank", @"key2":@"duck"}
mutableCopy];
字典中添加新的键值对以及 修改某一对键值
//字典中添加新的键值对以及 修改某一对键值
[mudic setObject:@"demaxiya" forKey:@"name1"];
[mudic setObject:@"hangbin" forKey:@"name2"];
NSLog(@"%@",mudic);
移除字典的值
//移除指定的键对应的键值对
[mudic removeObjectForKey:@"name1"];
NSLog(@"%@",mudic);
//移除字典中所有的键值对
[mudic removeAllObjects];
集合NSSet
集合两大特性 排异性 无序性 哈希算法 集合优点 效率特别高
初始化方法
//初始化方法
NSSet *ns = [[NSSet alloc] initWithObjects:@"faker",@"banji",@"mrain", nil];
//便利构造器
NSSet *ns2 = [NSSet setWithObjects:@"faker",@"banji",@"mrain", nil];
集合的取值
//获取集合中对象的个数
NSLog(@"%ld",[ns count]);
//获取集合中所有的对象
NSLog(@"%@",[ns allObjects]);
//从集合中取出一个对象
NSLog(@"%@",[ns anyObject]);
NSMutableSet 可变集合
初始化方法
//初始化方法
NSMutableSet *name = [[NSMutableSet alloc] initWithCapacity:0];
//便利构造器
NSMutableSet *name1 = [NSMutableSet setWithCapacity:0];
添加删除
//添加一个对象
[name addObject:@"bang"];
NSLog(@"%@",name);
//移除一个对象
[name removeObject:@"bang"];
//移除所有对象
[name removeAllObjects];
总结
总结
OC中为我们提供了三⼤大容器,数组,字典和集合,三个 容器中存储的都是对象类型。
数组:是一个有序的集合,当我们需要管理有序的一组对 象的时候需要使⽤用数组。
集合:集合是⼀个⽆无序的容器,并且容器中的对象不能够 重复。
在自己选择的路是坚定的走下去!!!!!!!!!!