大纲
一、字典NSDictionary
项目:Dictionary0321
无序存储的,通过键值对的形式存在。
- NSDictionary
1.创建并初始化
2.获取 - NSMutableDictionary
1.创建并初始化
2.获取、增加、修改、删除
小提示:
NSNumber对象 将基本数据类型转换为 对象类型
作用:将基本数据类型作为对象来操作。
NSNumber *number = [NSNumber numberWithInt:1];
二、选择器UIPickerView
版本1(1维数组)
项目:PickerView0321
NSAttributedString:可以设置大小、颜色(NSString就不行)
步骤:准备数据(一维数组)
创建UIPickerView
设置代理
3.1 设置 行、列 标题
3.2 刷新数据设置数据源
4.1 设置列数
4.2 设置行数添加到self.view
版本2(数组嵌套【相当于C语言中的二维数组】)
项目:PickerView_Arr&Arr0321
步骤:准备数据(使用数组嵌套数组)
创建UIPickerView
设置代理
3.1 设置 行、列 标题
3.2 刷新数据设置数据源
4.1 设置列数
4.2 设置行数添加到self.view
版本3(字典)
项目:PickerView_Dictionary0321
步骤:准备数据(字典存数组)
创建UIPickerView
设置代理
3.1 设置 行、列 标题
3.2 刷新数据设置数据源
4.1 设置列数
4.2 设置行数添加到self.view
三、时间选择器UIDatePicker
项目:DatePicker0321UIDatePicker
步骤:
1.创建初始化
2.设置属性
3.添加事件
4.添加到self.viewNSDateFormatter
步骤:
1.创建初始化
2.确定格式(setDateFormat)
3.将时间,按上述格式格式化
正文
一、字典NSDictionary
项目:Dictionary0321
无序存储的,通过键值对的形式存在。
- NSDictionary
1.创建并初始化
2.获取 - NSMutableDictionary
1.创建并初始化
2.获取、增加、修改、删除
小提示:
NSNumber对象 将基本数据类型转换为 对象类型
作用:将基本数据类型作为对象来操作。
NSNumber *number = [NSNumber numberWithInt:1];
源码:
//1.不可变字典:NSDictionary
//1.1 创建
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"郑州",@"河南",@"石家庄",@"河北",@"南京",@"江苏", nil];
//1.2 根据 键 获取字典中相对应的值
NSString *str = [dic objectForKey:@"江苏"];
// NSLog(@"%@",str);
//1.3 遍历
//获取所有的Key
NSArray *arrKeys = [dic allKeys];
for (int i = 0; i < arrKeys.count; i++)
{
NSString *provinceKey = [arrKeys objectAtIndex:i];
NSString *cityValue = [dic objectForKey:provinceKey];
// NSLog(@"city = %@",cityValue);
}
//2.可变字典:NSMutableDictionary
//2.1 创建
NSMutableDictionary *mutableDic = [[NSMutableDictionary alloc]init];
//2.2 增加 键-值 对
[mutableDic setObject:@"张三" forKey:@"键 1"];
[mutableDic setObject:@"李四" forKey:@"键 2"];
//2.3 修改 修改 键 所对应的 值
[mutableDic setObject:@"小王" forKey:@"键 1"];
//2.4 删除
[mutableDic removeObjectForKey:@"键 1"];
// [mutableDic removeAllObjects];
// [mutableDic removeObjectsForKeys:(nonnull NSArray *)];
//2.5 遍历
NSArray *arrKeys2 = [mutableDic allKeys];
for (int i = 0; i < arrKeys2.count; i++)
{
NSString *key = [arrKeys2 objectAtIndex:i];
NSString *value = [mutableDic objectForKey:key];
NSLog(@"Key = %@",key);
NSLog(@"Value = %@",value);
}
二、选择器UIPickerView
- 版本1(1维数组)
项目:PickerView0321
NSAttributedString:可以设置大小、颜色(NSString就不行)
步骤: - 准备数据(一维数组)
- 创建UIPickerView
- 设置代理
3.1 设置 行、列 标题
3.2 刷新数据 - 设置数据源
4.1 设置列数
4.2 设置行数 - 添加到self.view
源码:
@interface ViewController ()
{
NSArray *_provinceArr,*_heNanArr,*_heBeiArr,*_shanDongArr,*_guangDongArr;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//提前准备好数据,放在数组中
_provinceArr = [[NSArray alloc]initWithObjects:@"河南",@"河北", nil];
_heNanArr = [[NSArray alloc]initWithObjects:@"郑州",@"开封",@"洛阳",@"平顶山",@"信阳",@"漯河",@"周口", nil];
_heBeiArr = [[NSArray alloc]initWithObjects:@"石家庄",@"邯郸",@"保定",@"唐山",@"秦皇岛", nil];
//1.选择器
UIPickerView *picker = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 200, 300, 100)];
picker.backgroundColor = [UIColor redColor];
//1.1 协议方法
//设置代理
picker.delegate = self;
//设置数据源
//dataSource也是代理模式
picker.dataSource = self;
[self.view addSubview:picker];
}
#pragma mark - UIPickerViewDataSource
//设置列数
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
//设置行数
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//component表示列号
if (component == 0)
{
return _provinceArr.count;
}
else
{
//首先确定 第0列 选中的行号
int rowNum = [pickerView selectedRowInComponent:0];
if (rowNum == 0)
{
return _heNanArr.count;
}
else
{
return _heBeiArr.count;
}
}
}
#pragma mark - UIPickerViewDataSource
//刷新数据
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
//选中第0列 刷新第1列
if (component == 0)
{
//重新加载数据
[pickerView reloadComponent:1];
//让第1列 从0行开始 显示
[pickerView selectRow:0 inComponent:1 animated:YES];
}
}
//设置 每行、每列 的标题
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == 0)
{
//根据行号 获取标题
return [_provinceArr objectAtIndex:row];
}
else
{
//首先 确定 第0列 选择的 行号
int rowNum = [pickerView selectedRowInComponent:0];
//设置 第1列 每行的 标题
if (rowNum == 0)
{
return [_heNanArr objectAtIndex:row];
}
else
{
return [_heBeiArr objectAtIndex:row];
}
}
}
- 版本2(数组嵌套【相当于C语言中的二维数组】)
项目:PickerView_Arr&Arr0321
步骤: - 准备数据(使用数组嵌套数组)
- 创建UIPickerView
- 设置代理
3.1 设置 行、列 标题
3.2 刷新数据 - 设置数据源
4.1 设置列数
4.2 设置行数 - 添加到self.view
源码(与一维数组的区别):
//1.组织数据
_provinceArr = [[NSArray alloc]initWithObjects:@"河南",@"山东",@"陕西",@"安徽", nil];
NSArray *heNanArr = [[NSArray alloc]initWithObjects:@"郑州",@"平顶山",@"南阳", nil];
NSArray *shanDongArr = [[NSArray alloc]initWithObjects:@"济南",@"日照",@"菏泽",@"烟台", nil];
//1.1 创建另一个数组,存放城市数组
_totalArr = [[NSArray alloc]initWithObjects:heNanArr,shanDongArr, nil];
- 版本3(字典)
项目:PickerView_Dictionary0321
步骤: - 准备数据(字典存数组)
- 创建UIPickerView
- 设置代理
3.1 设置 行、列 标题
3.2 刷新数据 - 设置数据源
4.1 设置列数
4.2 设置行数 - 添加到self.view
源码:
//1.通过 字典 组织数据
NSArray *heNanArr = [[NSArray alloc]initWithObjects:@"郑州",@"平顶山",@"南阳", nil];
NSArray *shanDongArr = [[NSArray alloc]initWithObjects:@"济南",@"日照",@"菏泽",@"烟台", nil];
//创建字典
_provinceDic = [[NSDictionary alloc]initWithObjectsAndKeys:heNanArr,@"河南省",shanDongArr,@"山东省",shanXiArr, nil];
三、时间选择器UIDatePicker
项目:DatePicker0321
UIDatePicker
步骤:
1.创建初始化
2.设置属性
3.添加事件
4.添加到self.viewNSDateFormatter
步骤:
1.创建初始化
2.确定格式(setDateFormat)
3.将时间,按上述格式格式化
源码:
- (void)viewDidLoad
{
[super viewDidLoad];
UIDatePicker *datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 200, 320, 240)];
datePicker.datePickerMode = UIDatePickerModeDate;
//获取当前 最小的 日期时间
datePicker.minimumDate = [NSDate date];
//获取从现在起 间隔多长时间
//参数单位:秒
datePicker.maximumDate = [NSDate dateWithTimeIntervalSinceNow:31*24*60*60];
//添加点击事件
[datePicker addTarget:self action:@selector(selectDate:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:datePicker];
}
//点击时间
- (void)selectDate:(UIDatePicker *)datePicker
{
//获取选中的时间
NSDate *selectedDate = [datePicker date];
//**************日期格式化**************
//1.创建 日期格式化器
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
//2.设置日期格式
//1999年12月1日 12点11分5秒 1999-12-1 12:11:5
//yyyy-MM-dd
//hh:mm:ss 12小时制
//hh:mm:ss a 12小时制(a:上下午)
//HH:mm:ss 24小时制
[dateFormatter setDateFormat:@"yyyy年MM月dd日 hh时mm分ss秒 a"];
// [dateFormatter setAMSymbol:@"上午好"];
[dateFormatter setPMSymbol:@"下午好"];
//3.将格式化的日期,转换为字符串
NSString *dateStr = [dateFormatter stringFromDate:selectedDate];
NSLog(@"%@",dateStr);
_labDate.text = dateStr;
}