黑马程序员——OC基础---NSDictionary
------- android培训、ios培训、期待与您交流! ----------
0.NSDictionary
创建1:
NSDictionary*dic = [NSDictionary dictionarywithobject:@”jack”forKey:@” name”];
创建2:
NSDictionary*dic = [NSDictionary dictionarywithobjectAndKey:@”jack”,@” name”,nil];
含义:
Key------------------>value
索引----------------->文字内容
输出:
id obj = [ dic objectForKey:@”name”]; // 将key赋值给obj。
NSLog(@”%@”, obj); // 输出jake;
1.以集合的形式写入Key 和value
NSArray *keys = [@”name”,@”adress”];
NSArray *objects = [@”jake”,@”北京” ];
NSDictionary *dic = [NSDictionary dictionarywithobject:@”jack”forKey:@”name”];
id obj = [ dic objectForKey:@”name”];
// 通过访问key得到value的值;
NSLog(@”%@”, obj); // 输出jake;
2.新写法
创建:*NSDictionary *dic = @{@”name” : @”jake”,@”adress : @”北京”};
返回的是不可变的字典。
输出:id obj = dict{@“name”};
Dict.count 返回的是键值对数。
3.添加键值的办法
NSMutableDictionary *dic = [NSMutableDictionary dictionarywithobject:@”jake” forKey:@”name”];
[ dic setobject : @”tom” forKey : @”name”]; // 可变字典可添加键值。
4.遍历方法(两种)
C语言:
NSArray *keys = [dict allKeys];
For (int i = 0; i < dict.count; i++)
{
NSString *key = keys[i];
NSString *object = dict[key];
NSLog(@”%@ = %@,key,object”);
}
Block遍历:
[dic enumeratekeysAndobjectsUsingBlock:
^(id key ,id obj, BOOL *stop){
NSLog(@”%@---%@”,key ,obj);
*stop = YES // *stop为yes时,遍历停止
}]
5.集合总结
NSArray
* 有序
* 快速创建 @[ obj1, obj2 obj3 ] (不可变)
* 快速访问元素 数组名[i];
NSDictionary
* 无序
* 快速创建 @{key1:obj1, key2:obj2} (不可变)
* 快速访问 字典名[key]
6.NSNumber
int转为OC对象:
NSNumber *num = [NSNumber numberWithInt:10];
OC对象转为int
Int a = [num intValue];
NSNumber之所以能够包装普通数据类型,是因为继承了NSValue。
7.字符串类型与普通类型的相互转化
int a = 20;
NSString *str = [NSString strngWithFormat:@”%d”,a];
int b = [str intValue];
8.编译器特性
@后面跟一个数字,会自动包装成NSNumber对象。
int age = 123;转化用()包住@(age)
@‘a’将a包装成NSNumber对象。
9.结构体的包装
CGPoint p = CGPointMake(10,10);
NSValue value = [NSValue valueWithPoint:p];
NSArray *array = @[value]
// [ value PointValue] 将对象转为对应的结构体
10.NSDate
将时间转化为对象
int main()
{
// 09/10/2011
NSString *time = @"2011/09/10 18:56";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy/MM/dd HH:mm";
NSDate *date = [formatter dateFromString:time];
NSLog(@"%@", date);
return 0;
}
将对象转化为字符串输出
int main()
{
NSDate *date = [NSDate date];
// 日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// y 年 M 月 d 日
// m 分 s 秒 H (24)时 h(12)时
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *str = [formatter stringFromDate:date];
NSLog(@"%@", str);
}