------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
NSArray/NSMutableArray
类比 int ages[10]= {23,43,45,56};
Person *p=[[Person alloc] init];
Person *person[5]= {p,[[Person alloc]init]};
//OC数组不能存放nil
//OC数组只能存放OC对象,不能存放非OC对象类型,如(int,struct,enum...)
//NSArray *array=[NSArray array]; // 这个array永远是空数组,此类方法用于NSMutableString
NSArray *array2 = [NSArray arrayWithObject:@"jack"];
NSArray *array3 = [NSArray arrayWithObjects:@"jack",@"rose",nil];
NSArray *array4 = @[@"jack",@"rose"]; // Xcode特性,翻译成面的那一句话 只返回NSArray NSMutableArray *array5 = @[@"jack",@"rose"];错误写法
NSLog(@"%@",array3.count); // 打印为2 ,计算数组的长度
NSLog(@"%@",[array3 objectAtIndex:1]);// 打印rose,OC数组array3下标为1的元素
NSlog(@"%@",array3[1]); // Xcode特性 翻译成上面的那一句话
OC数组遍历
Person *p = [[Person alloc]init];
NSArray *array=@[p,@"jack",@"rose"];
1、for(int i=0;i<array.count;i++)
{
NSLog(@"%@",array[i]);
}
2、
int i=0;
for(id obj in array)
{
NSUInteger i=[array indexOfObject:obj];
NSLog(@"%@",array[i]);
i++;
if(i==0) break; // 下标为0时,跳出遍历
}
3、
[array enumerateObjectsUsingBlock:
^(id obj,NSUInteger idx,BOOL *stop)
{
NSLog(@"%ld--%@",idx,obj);
if(idx==1) *stop=YES; // 下标为1时,跳出遍历
}];
扩展:
3内部的解析:
for(int i=0;i<array.count;i++)
{
BOOL isStop=NO;id obj=array[i];
myBlock(obj,i,&isStop); // myBlock的代码块定义如方法3中的代码块
if(isStop) break;
}
//每遍历一次就调用一次block并且把当前元素和索引位置当做参数传给block
NSSet/NSMutableSet
基本用法
NSSet *s1 = [NSSet setWithObjects:@"jack1",@"jack2",@"jack3",@"jack4",nil];
NSString *str = [s1 anyObject]; // 随机取出一个元素
NSLog(@"%@",str);
NSMutableSet *s2 = [NSMutableSet set];
[s2 addObject:@"hack"]; // 添加元素
NSSet和NSArray对比
共同点:
*都是集合,都能存放多个OC对象
*只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float、struct、enum...)
*本身长度都不可变,有一个可变的子类
不同点:
NSArray有序,NSSet无序
NSDictionary / NSmutableDictionary
// NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
//NSArray *keys = @[@"name",@"address"];
// NSArray *objects = @[@"jack",@"北京"];
// NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
//NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:
// @"jack",@"name",
// @"北京",@"address",nil];
NSDictionary *dict4 = @{@"name":@"jack",@"address":@"北京"};
//id obj1 = [dict4 objectForKey:@"name"];
id obj2 = dict4[@"name"];
NSLog(@"%@",obj2);
两种遍历方式
//NSArray *keys2 = [dict4 allKeys];
//for(int i=0; i<dict4.count; i++)
//{
//NSString *key = keys2[i];
// NSString *obj = dict4[key];
// NSLog(@"%@---%@",key,obj);
//}
[dict4 enumerateKeysAndObjectsUsingBlock:
^(id key , id obj , BOOL *stop)
{
NSLog(@"%@---%@",key,obj);
}];
以上打”//”的方法表示不推荐的方法
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------