Foundation 框架初體驗
1. NSArray 不可變數(shù)組
//不可變數(shù)組 OC的數(shù)組可以存儲不同類型的對象 只能存儲對象
//順序的存儲結(jié)構(gòu) 可以遍歷 每個元素占的內(nèi)存空間是連續(xù)的
//注意點: 實例化的時候必須讓對象進(jìn)行賦值 因為它是不可變數(shù)組
//實例化 用逗號隔開
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 ];
//數(shù)組長度
int count = (int)array.count;
//數(shù)組連接成字符串 [ 元素中間用 ~ 連接]
NSString *str = [ array componentsJoinedByString:@“~~”]; 結(jié)果 aa~~bb~~cc
//字符串分割成數(shù)組 [ 把 元素中間的~ 去掉]
NSArray *array = [str componentsSeparatesdByString:@“~~”] 結(jié)果 aa
bb
// 數(shù)組 追加 元素
NSArray *array 1 = [array2 arrayByAddingObject:@“ee”]; cc
// 兩個數(shù)組元素相加
NSArray *array3 = [array1 arrayByAddingObjectsFromArray:array2];
//判斷數(shù)組中是否有某個對象
if([array containsObject:@"2"]){
NSLog(@"存在");
}
else{
NSLog(@"不存在");
}
//取出數(shù)組中 第一個元素
NSString *str = [array firstObject];
//取得數(shù)組中 最后一個元素
NSString *str2 = [array lastObject];
//取出數(shù)組中 下標(biāo)為3的元素
NSString *str3 = [array objectAtIndex:3]; //0 ,1 ,2 弓坞,3 取值為4
NSString *str = array[3];
//打印元素對應(yīng)的下標(biāo)(如果元素不存在 則打印 -1 )
int index =(int)[array indexOfObject:@"3"]; //0燃领,1块茁,2(數(shù)值為3)下標(biāo)為2
NSUInteger n = [array indexOfObject:”dd”];
//方法(需要讓數(shù)組中的元素類型保持一致今膊,不一致會崩潰) 也叫
// 按照下標(biāo)逐漸遞增的铅忿,按照數(shù)組的首個元素猜煮,到末尾元素排布)
(迭代遍歷) 2. 快速枚舉 for in
// 會依次去array 中取元素, 每一次都存在str中
for(NSString *str in array) {
NSLog(@"str = %@",str);
}
例子:// 取出books 數(shù)組中每一個元素的name 屬性值歧匈,放到一個新的數(shù)組中返回
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 可變數(shù)組
// 初始化一個沒有數(shù)據(jù)的數(shù)組
NSMutableArray *array = [NSMutableArray array ]
// 實例化的時候不需要讓對象進(jìn)行賦值 因為它是可變數(shù)組
NSMutableArray *array = [[NSMutableArray alloc]init];
//添加元素
[array addObject:p1];
[array addObject:@“l(fā)ng”];
//添加數(shù)組(會自動加入數(shù)組中的元素)
[array addObjectsFromArray:personArray];
//刪除元素
//刪除數(shù)組內(nèi) 所有的元素
[array removeAllObjects];
//刪除數(shù)組內(nèi) 指定的元素
[array removeObject:@“aa”];
//刪除數(shù)組內(nèi) 最后一個元素
[array removeLastObject];
//刪除指定下標(biāo)的元素
[array removeObjectAtIndex:2];//刪除下標(biāo)為2 第三個元素
//交換數(shù)組內(nèi)元素的位置
[ array exchangeObjectAtIndex:0 withObjectAtIndex:1]; //將第一個和第二個元素交換
//替換
[array replaceObjectAtIndex:1 withObject:@“M”];
arrM[0]=@“ zs“
//把模型數(shù)據(jù)添加到最前面
[self.wineArray insertObject:wine atIndex:0]
D64957A3-580F-49B5-ABFD-D57B971AC1A1.png
3. 遍歷
for (NSDictionary *dic in dataM) {
if (![dic[@"pov_name"] isEqualToString:@"please choose"]) {
[_dataArr addObject:dic[@"pov_name"]];//裝的是尺寸名
[_dataIDArr addObject:dic[@"pov_id"]];//裝的是尺寸ID
//數(shù)組的遍歷(遍歷:查看數(shù)組中的每一個元素)
//遍歷的常用的兩種方法:1.基本的for循環(huán)通過下標(biāo)逐一取出查看 2. for in 快速枚舉
//方法 1. for循環(huán)
for(int i = 0; i < array.count ;i++) @[@“11”,@“22”,@“33”]
{
//取出數(shù)組中 下標(biāo)為i的字符串 從0開始
NSString *str1 =[array objectAtIndex:i];
}
//方法 2. for in
//如果是OC 數(shù)組可以使用OC 中的增強for 循環(huán)來遍歷,
逐個取出arr 中的元素垒酬, 將取出的元素賦值給obj
注意: obj 的類型可以根據(jù)數(shù)組中袁術(shù)的類型來寫, 不一定要寫NSObject
for ( NSObject *obj in arr )
for(NSString *str in arr)
{
NSLog(@“obj = %@’,obj )
}
//計算數(shù)組中的元素
//遍歷數(shù)組
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)
//判斷數(shù)組中是否有某個對象
if([array containsObject:@"2"]){
NSLog(@"存在");
}
else{
NSLog(@"不存在");
}
//打印元素對應(yīng)的下標(biāo)(如果元素不存在 則打印 -1 )
int index =(int)[array indexOfObject:@"3"]; //0,1件炉,2(數(shù)值為3)下標(biāo)為2
NSUInteger n = [array indexOfObject:”dd”];
例子:// 取出books 數(shù)組中每一個元素的name 屬性值勘究,放到一個新的數(shù)組中返回
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];// 圖片鏈接的數(shù)組
}
76F31475-9651-45DE-81B0-6AC5FBE03456.png
for(MIOOrderInfo *order in self.subs)
{
//商品id
NSString *pid = order.pid;
//男.女 鞋
NSString *poid =order.poid;
//鞋碼42
NSString *pvid =order.pvid;
//購買數(shù)量
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);