数组、集合与字典
数组 NSArray 静态数组 (不可变)count 记录了当前元素里面的个数
objectAtIndex 对象的位置(索引)
NSArray * array=@[@"1",@"2",@"32"];
NSLog(@"%ld",[array count]);
//遍历数组
for (int i=0; i<[array count]; i++) {
NSLog(@"%@",[array objectAtIndex:i]);//objectAtIndex 对象在哪个位置
//c普通方法
NSLog(@"%@",array[i]);
}
//快速遍历方式
for (NSString * str in array) {
NSLog(@"%@",str);
}
动态数组
//arrayWithCapacity 指定空间大小 NSMutableArray * arr=[NSMutableArray arrayWithCapacity:20]; //增加成员 addObject: 拼接 stringWithFormat for (int i=0; i<10; i++) { [arr addObject:[NSString stringWithFormat:@"%d,%@",i+1,@"kjhkjh"]]; } //插入成员insertObject: 成员 atIndex:索引 [arr insertObject:@"a" atIndex:7]; //删除成员 [arr firstObject];//数组里面的第一个对象 // [arr removeAllObjects];//删除所有对象 // [arr removeLastObject];//删除最后的对象 // [arr removeObject:@"2"];//删除选中的对象 // [arr removeObjectAtIndex:2];//根据下标删除对象 for (NSString * str in arr) { NSLog(@"%@",str); }
集合 NSSet
集合里面的内容是唯一(重复值只保存一个)的,无序的 先把集合的内容带入一个素组里 再遍历数组排序
NSSet * set = [NSSet setWithObjects:@"1",@"2",@"3",@"2", nil]; NSArray * arr=[set allObjects]; arr=[arr sortedArrayUsingSelector:@selector(compare:)];//排序 for(NSString * str in arr) { NSLog(@"%@",str); }
动态集合 NSMutableSet
NSMutableSet * set=[NSMutableSet setWithCapacity:20]; [set addObject:@"1"]; [set addObject:@"2"]; [set addObject:@"3"]; [set addObject:@"1"];//内容重复了只显示一个 [set removeObject:@"1"];//删除 1 的成员 for(NSString * str in set) { NSLog(@"%@",str); }
字典 一个建对应一个值
字典里面有两个数组 一个是关键字(建)的数组 一个是值的数组 一般是通过关键字(建)遍历
NSDictionary * dict =@{@"1":@"1111",@"2":@"2222"};
NSArray * keys =[dict allKeys];//allKeys属性 返回所有的关键字
for (NSString * str in keys) {
//键的对象 objectForKey
NSLog(@"key=%@,vallu=%@",str,[dict objectForKey:str]);
}
第二种方法 类的行为 得到一个字典的对象
dictionaryWithObjectsAndKeys 一个对象对应一个建的创建
NSDictionary * dict=[NSDictionary dictionaryWithObjectsAndKeys:@"张三",@"1",@"李四",@"2",nil]; NSArray * keys =[dict allKeys];//allKeys属性 返回所有的关键字 for (NSString * str in keys) { //键的对象 objectForKey NSLog(@"key=%@,vallu=%@",str,[dict objectForKey:str]); }
第三种方法
NSDictionary * dict =[[NSDictionary alloc]initWithObjectsAndKeys:@"张三",@"1",@"李四",@"2", nil]; NSArray * keys =[dict allKeys];//allKeys属性 返回所有的关键字 for (NSString * str in keys) { //键的对象 objectForKey NSLog(@"key=%@,vallu=%@",str,[dict objectForKey:str]); }
动态字典 NSMutableDictionary
NSMutableDictionary * dict=[[NSMutableDictionary alloc]initWithCapacity:20]; [dict setObject:@"张三" forKey:@"1"]; [dict setObject:@"张5" forKey:@"1"]; [dict setObject:@"李四" forKey:@"2"]; NSArray * keys =[dict allKeys]; for (NSString * str in keys) { //键的对象 objectForKey NSLog(@"key=%@,vallu=%@",str,[dict objectForKey:str]); }
NSValue
NSValue可以包装任意一个对象,包括系统自定义的数据结构,结构体等等
//NSValue 是一个值 可以保存结构的对象 CGPoint point={100,100}; CGPoint point1={200,200}; CGPoint point2={300,300}; NSValue * v1=[NSValue valueWithPoint:point]; NSValue * v2=[NSValue valueWithPoint:point1]; NSValue * v3=[NSValue valueWithPoint:point2]; NSArray * arr=[NSArray arrayWithObjects:v1,v2,v3,nil]; for (NSValue * v in arr) { CGPoint p =[v pointValue]; NSLog(@"x=%g,y=%g",p.x,p.y); }
数值转换成对象 NSNumber
// 数值 NSNumber 把数据类型封装成数值型对象 数据类型放不了集合里面 NSMutableArray * array =[NSMutableArray arrayWithCapacity:10]; for (int i=0; i<10; i++) { NSNumber * number=[NSNumber numberWithInt:i+1]; [array addObject:number]; } for (NSNumber * num in array) { NSLog(@"%d",[num intValue]);//数值型对象转化成数据类型 带小数点就需要换成 doubleValue }
代码块
声明了一个代码块 返回值是 字符串类型 参数为空
返回值类型(^Block名字)(参数列表)
@property(nonatomic,copy) NSString * (^MyBlock)(void);
实现文件
-(void)blockStudent{ self.MyBlock = ^NSString *{ return @"asd"; };
Block的声明与赋值只是保存了一段代码段,必须调用才能执行内部代码
^被称作"脱字符"
浙公网安备 33010602011771号