Foundation 框架初体验
1. NSArray 不可变数组
//不可变数组 OC的数组可以存储不同类型的对象 只能存储对象
//顺序的存储结构 可以遍历 每个元素占的内存空间是连续的
//注意点: 实例化的时候必须让对象进行赋值 因为它是不可变数组
//实例化 用逗号隔开
NSArray * array =[[NSArray alloc]initWithObjects:@"1", @"2", @"3", @"4", nil];
NSArray * array = @[@“aa”, @“bb”,@“cc”];
NSArray * array = @[@1, @2,@3];
NSMutableArray <UIImage *>*array = [NSMutableArray array ];
//数组长度
int count = (int)array.count;
//数组连接成字符串 [ 元素中间用 ~ 连接]
NSString *str = [ array componentsJoinedByString:@“~~”]; 结果 aa~~bb~~cc
//字符串分割成数组 [ 把 元素中间的~ 去掉]
NSArray *array = [str componentsSeparatesdByString:@“~~”] 结果 aa
bb
// 数组 追加 元素
NSArray *array 1 = [array2 arrayByAddingObject:@“ee”]; cc
// 两个数组元素相加
NSArray *array3 = [array1 arrayByAddingObjectsFromArray:array2];
//判断数组中是否有某个对象
if([array containsObject:@"2"]){
NSLog(@"存在");
}
else{
NSLog(@"不存在");
}
//取出数组中 第一个元素
NSString *str = [array firstObject];
//取得数组中 最后一个元素
NSString *str2 = [array lastObject];
//取出数组中 下标为3的元素
NSString *str3 = [array objectAtIndex:3]; //0 ,1 ,2 ,3 取值为4
NSString *str = array[3];
//打印元素对应的下标(如果元素不存在 则打印 -1 )
int index =(int)[array indexOfObject:@"3"]; //0,1,2(数值为3)下标为2
NSUInteger n = [array indexOfObject:”dd”];
//方法(需要让数组中的元素类型保持一致,不一致会崩溃) 也叫
// 按照下标逐渐递增的,按照数组的首个元素,到末尾元素排布)
(迭代遍历) 2. 快速枚举 for in
// 会依次去array 中取元素, 每一次都存在str中
for(NSString *str in array) {
NSLog(@"str = %@",str);
}
例子:// 取出books 数组中每一个元素的name 属性值,放到一个新的数组中返回
NSMutableArray *names = [NSMutableArray array];
for(Book *book in p.books) {
[names addObject:book.name];
}
例子二:
double sum = 0;
// 计算所有书的总价格
for(Book *book in p.books) {
sum += book.price;
}
2. NSMutableArray 可变数组
// 初始化一个没有数据的数组
NSMutableArray *array = [NSMutableArray array ]
// 实例化的时候不需要让对象进行赋值 因为它是可变数组
NSMutableArray *array = [[NSMutableArray alloc]init];
//添加元素
[array addObject:p1];
[array addObject:@“lng”];
//添加数组(会自动加入数组中的元素)
[array addObjectsFromArray:personArray];
//删除元素
//删除数组内 所有的元素
[array removeAllObjects];
//删除数组内 指定的元素
[array removeObject:@“aa”];
//删除数组内 最后一个元素
[array removeLastObject];
//删除指定下标的元素
[array removeObjectAtIndex:2];//删除下标为2 第三个元素
//交换数组内元素的位置
[ array exchangeObjectAtIndex:0 withObjectAtIndex:1]; //将第一个和第二个元素交换
//替换
[array replaceObjectAtIndex:1 withObject:@“M”];
arrM[0]=@“ zs“
//把模型数据添加到最前面
[self.wineArray insertObject:wine atIndex:0]
3. 遍历
for (NSDictionary *dic in dataM) {
if (![dic[@"pov_name"] isEqualToString:@"please choose"]) {
[_dataArr addObject:dic[@"pov_name"]];//装的是尺寸名
[_dataIDArr addObject:dic[@"pov_id"]];//装的是尺寸ID
//数组的遍历(遍历:查看数组中的每一个元素)
//遍历的常用的两种方法:1.基本的for循环通过下标逐一取出查看 2. for in 快速枚举
//方法 1. for循环
for(int i = 0; i < array.count ;i++) @[@“11”,@“22”,@“33”]
{
//取出数组中 下标为i的字符串 从0开始
NSString *str1 =[array objectAtIndex:i];
}
//方法 2. for in
//如果是OC 数组可以使用OC 中的增强for 循环来遍历,
逐个取出arr 中的元素, 将取出的元素赋值给obj
注意: obj 的类型可以根据数组中袁术的类型来写, 不一定要写NSObject
for ( NSObject *obj in arr )
for(NSString *str in arr)
{
NSLog(@“obj = %@’,obj )
}
//计算数组中的元素
//遍历数组
int sum = 0;
for(MIOOrderInfo *order in self.subs)
{
NSString *str = order.pquantity;
int a = [str intValue];
sum = sum +a ;
}
NSLog(@"%i",sum);
![4A1936BB-C987-46D7-BE4B-7B0E6739BD60.png](http://upload-images.jianshu.io/upload_images/2442197-26ae9b549404d938.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
//判断数组中是否有某个对象
if([array containsObject:@"2"]){
NSLog(@"存在");
}
else{
NSLog(@"不存在");
}
//打印元素对应的下标(如果元素不存在 则打印 -1 )
int index =(int)[array indexOfObject:@"3"]; //0,1,2(数值为3)下标为2
NSUInteger n = [array indexOfObject:”dd”];
例子:// 取出books 数组中每一个元素的name 属性值,放到一个新的数组中返回
NSMutableArray *names = [NSMutableArray array];
for(Book *book in p.books) {
[names addObject:book.name];
}
NSMutableArray *arrPicM =[[NSMutableArray alloc]init];
self.arrPicM = arrPicM;
for (MIOTopModel *topModel in self.tops) {
[arrPicM addObject:topModel.src];// 图片链接的数组
}
for(MIOOrderInfo *order in self.subs)
{
//商品id
NSString *pid = order.pid;
//男.女 鞋
NSString *poid =order.poid;
//鞋码42
NSString *pvid =order.pvid;
//购买数量
NSString *pquantity = order.pquantity;
NSString *orderInfo =[NSString stringWithFormat:@"%@:%@:%@:%@",pid,poid,pvid,pquantity];
NSLog(@"%@",orderInfo);
str = [str stringByAppendingFormat:@";%@",orderInfo];
}
NSString *order_info =[str substringFromIndex:1];
NSLog(@"str = %@",order_info);