黑马程序员 OC语言 - 9 NSDictionary、NSMutableDictionary、NSNumber、NSDate、NSValue
2014-08-30 16:55
555 查看
若排版有错误,请查看PDF版:http://pan.baidu.com/s/1dDnHmDz
索引 ----> 文字内容
1) 字典里面存储的东西都是键值对
2) 字典不允许有相同的key,但允许有相同的value(Object)
3) 字典是无序的
NSDictionary *dict = [NSDictionarydictionaryWithObject:@"jack" forKey:@"name"];
2) 方法2:
NSArray *keys = @[@"name",@"address"];
NSArray *objects = @[@"jack",@"北京"];
NSDictionary *dict = [NSDictionarydictionaryWithObjects:objects forKeys:keys];
3) 方法3:
NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"jack",
@"name",
@"北京",@"address",
@"32423434",
@"qq", nil];
4) 方法4:(常用)
NSDictionary *dict = @{@"name" :@"jack",
@"address" :@"北京"};
// 添加键值对
[dict setObject:@"jack" forKey:@"name"];
// 移除键值对
[dictremoveObjectForKey:<#(id)#>];
id obj = dict[@"name"];
NSLog(@"%ld", dict.count);
// 返回的是键值对的个数
@"address" :@"北京",
@"name" :@"jack",
@"name2" :@"jack",
@"name3" :@"jack",
@"qq" :@"7657567765"
};
1) 方法1:
NSArray *keys = [dict allKeys];
for (int i =0; i<dict.count; i++)
{
NSString *key = keys[i];
NSString *object = dict[key];
NSLog(@"%@ = %@", key, object);
}
2) 方法2:(常用)
[dict enumerateKeysAndObjectsUsingBlock:
^(id key,
id obj, BOOL *stop) {
NSLog(@"%@ - %@", key, obj);
// *stop = YES; 停止遍历
}];
@{@"name" :@"jack",
@"qq" :@"432423423",
@"books":@[@"5分钟突破iOS编程",@"5分钟突破android编程"]},
@{@"name" :@"rose",
@"qq" :@"767567"},
@{@"name" :@"jim",
@"qq" :@"423423"},
@{@"name" :@"jake",
@"qq" :@"123123213"}
];
NSDictionary *jim = persons[2]
c0bb
;
NSString *bookName =persons[0][@"books"][1];//
先取出0位置对应的字典,再取出字典中books这个key对应的数据,再取出元素
NSArray *array = persons[0][@"books"];
NSLog(@"%@", persons[1][@"qq"]);
NSArray *array =
@[
@{@"name" :@"jack",
@"age" :@20},
@{@"name" :@"rose",
@"age" :@25},
@{@"name" :@"jim",
@"age" :@27}
]
@10.5;
@20;
@YES;
@'A';
// NSNumber对象
@"A";
// NSString对象
2. 将age变量包装成NSNumber对象
int age =
100;
@(age);
//[NSNumbernumberWithInt:age];
NSNumber *n = [NSNumbernumberWithDouble:10.5];
3. 将对象转成基本数据类型
int d = [n
doubleValue];
NSLog(@"%d, %@", d, n);// 10, 10.5
int a =
20;
// @"20"
NSString *str = [NSStringstringWithFormat:@"%d", a];
NSLog(@"%d", [strintValue]);
// 20
NSDate *date1 = [NSDatedate];
NSLog(@"%@", date1);// 2014-08-24 10:59:08 +0000打印出的时候是0时区的时间(北京-东8区)
NSDate *date2 = [NSDatedateWithTimeInterval:5sinceDate:date1];
NSLog(@"%@", date2);// 2014-08-24 10:59:13+0000
// 从1970开始走过的秒数
NSTimeInterval seconds = [date1timeIntervalSince1970];
NSLog(@"%f", seconds);// 1408877948.974812
2. 将NSDate换成字符串输出,时间为北京时间
// 日期格式化类
NSDateFormatter *formatter1 = [[NSDateFormatteralloc]
init];
formatter1.dateFormat =
@"yyyy-MM-ddHH:mm:ss"; // y年 M月 d日
H(24)时 h(12)时
m分 s秒
NSString *str = [formatter1stringFromDate:date1];
// 将NSDate换成字符串输出
NSLog(@"%@", str);// 2014-08-24 18:59:08
3. 将字符串转换成NSDate输出
NSString *time =
@"2011/09/1018:56";
NSDateFormatter *formatter2 = [[NSDateFormatteralloc]
init];
formatter2.dateFormat =
@"yyyy/MM/ddHH:mm"; // 格式要和time相同,否则nill
NSDate *date3 = [formatter2dateFromString:time];
NSLog(@"%@", date3);// 2011-09-10 10:56:00+0000
1. 将结构体装成OC对象
// 将结构体转为Value对象
CGPoint p =
CGPointMake(10,
10);
NSValue *value = [NSValuevalueWithPoint:p];
NSLog(@"%@", value);// NSPoint: {10, 10}
// 将value转为对应的结构体
CGPoint p2 = [value
pointValue];
2. 将对象存入数组
NSArray *array =
@[value];
NSLog(@"%@", array);// ("NSPoint: {10,10}")
一、 NSDictionary、NSMutableDictionary
1. 字典
key----> value索引 ----> 文字内容
1) 字典里面存储的东西都是键值对
2) 字典不允许有相同的key,但允许有相同的value(Object)
3) 字典是无序的
2. NSDictionary(不可变字典)的创建
1) 方法1:NSDictionary *dict = [NSDictionarydictionaryWithObject:@"jack" forKey:@"name"];
2) 方法2:
NSArray *keys = @[@"name",@"address"];
NSArray *objects = @[@"jack",@"北京"];
NSDictionary *dict = [NSDictionarydictionaryWithObjects:objects forKeys:keys];
3) 方法3:
NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"jack",
@"name",
@"北京",@"address",
@"32423434",
@"qq", nil];
4) 方法4:(常用)
NSDictionary *dict = @{@"name" :@"jack",
@"address" :@"北京"};
3. NSMutableDictionary(可变字典)的创建
NSMutableDictionary *dict =[NSMutableDictionary dictionary];// 添加键值对
[dict setObject:@"jack" forKey:@"name"];
// 移除键值对
[dictremoveObjectForKey:<#(id)#>];
4. 取出字典里的内容
id obj = [dict objectForKey:@"name"];id obj = dict[@"name"];
NSLog(@"%ld", dict.count);
// 返回的是键值对的个数
5. 遍历字典
NSDictionary *dict = @{@"address" :@"北京",
@"name" :@"jack",
@"name2" :@"jack",
@"name3" :@"jack",
@"qq" :@"7657567765"
};
1) 方法1:
NSArray *keys = [dict allKeys];
for (int i =0; i<dict.count; i++)
{
NSString *key = keys[i];
NSString *object = dict[key];
NSLog(@"%@ = %@", key, object);
}
2) 方法2:(常用)
[dict enumerateKeysAndObjectsUsingBlock:
^(id key,
id obj, BOOL *stop) {
NSLog(@"%@ - %@", key, obj);
// *stop = YES; 停止遍历
}];
6. 数组与字典嵌套
NSArray *persons = @[@{@"name" :@"jack",
@"qq" :@"432423423",
@"books":@[@"5分钟突破iOS编程",@"5分钟突破android编程"]},
@{@"name" :@"rose",
@"qq" :@"767567"},
@{@"name" :@"jim",
@"qq" :@"423423"},
@{@"name" :@"jake",
@"qq" :@"123123213"}
];
NSDictionary *jim = persons[2]
c0bb
;
NSString *bookName =persons[0][@"books"][1];//
先取出0位置对应的字典,再取出字典中books这个key对应的数据,再取出元素
NSArray *array = persons[0][@"books"];
NSLog(@"%@", persons[1][@"qq"]);
二、 NSNumber
1. 将各种基本数据类型包装成NSNumber对象NSArray *array =
@[
@{@"name" :@"jack",
@"age" :@20},
@{@"name" :@"rose",
@"age" :@25},
@{@"name" :@"jim",
@"age" :@27}
]
@10.5;
@20;
@YES;
@'A';
// NSNumber对象
@"A";
// NSString对象
2. 将age变量包装成NSNumber对象
int age =
100;
@(age);
//[NSNumbernumberWithInt:age];
NSNumber *n = [NSNumbernumberWithDouble:10.5];
3. 将对象转成基本数据类型
int d = [n
doubleValue];
NSLog(@"%d, %@", d, n);// 10, 10.5
int a =
20;
// @"20"
NSString *str = [NSStringstringWithFormat:@"%d", a];
NSLog(@"%d", [strintValue]);
// 20
三、 NSDate
1. 创建一个时间对象NSDate *date1 = [NSDatedate];
NSLog(@"%@", date1);// 2014-08-24 10:59:08 +0000打印出的时候是0时区的时间(北京-东8区)
NSDate *date2 = [NSDatedateWithTimeInterval:5sinceDate:date1];
NSLog(@"%@", date2);// 2014-08-24 10:59:13+0000
// 从1970开始走过的秒数
NSTimeInterval seconds = [date1timeIntervalSince1970];
NSLog(@"%f", seconds);// 1408877948.974812
2. 将NSDate换成字符串输出,时间为北京时间
// 日期格式化类
NSDateFormatter *formatter1 = [[NSDateFormatteralloc]
init];
formatter1.dateFormat =
@"yyyy-MM-ddHH:mm:ss"; // y年 M月 d日
H(24)时 h(12)时
m分 s秒
NSString *str = [formatter1stringFromDate:date1];
// 将NSDate换成字符串输出
NSLog(@"%@", str);// 2014-08-24 18:59:08
3. 将字符串转换成NSDate输出
NSString *time =
@"2011/09/1018:56";
NSDateFormatter *formatter2 = [[NSDateFormatteralloc]
init];
formatter2.dateFormat =
@"yyyy/MM/ddHH:mm"; // 格式要和time相同,否则nill
NSDate *date3 = [formatter2dateFromString:time];
NSLog(@"%@", date3);// 2011-09-10 10:56:00+0000
四、 NSValue
NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue1. 将结构体装成OC对象
// 将结构体转为Value对象
CGPoint p =
CGPointMake(10,
10);
NSValue *value = [NSValuevalueWithPoint:p];
NSLog(@"%@", value);// NSPoint: {10, 10}
// 将value转为对应的结构体
CGPoint p2 = [value
pointValue];
2. 将对象存入数组
NSArray *array =
@[value];
NSLog(@"%@", array);// ("NSPoint: {10,10}")
相关文章推荐
- OC 学习笔记4 NSSet NSMutableSet NSDictionary NSMutableDictionary NSNumber NSValue
- 黑马程序员———OC语言 NSDictionary和 NSMutableDictionary的介绍
- 黑马程序员----OC学习之NSDictionary及NSMutableDictionary
- 【黑马程序员】OC-Foundation框架—NSDictionary和NSMutableDictionary
- 黑马程序员--NSArray,NSString,NSSet,NSDictionary,NSNumber,NSValue 及其可变(NSMutable..)
- 黑马程序员-oc基础-集合NSDictionary,NSMutableDictionary
- 【Objective-C】OC中字典基本概念和常用方法(NSDictionary和NSMutableDictionary)
- 黑马程序员———Objctive-C———【NSDictionary、NSMutableDictionary、NSFileManager】
- NSDictionary,NSMUtableDictionary-OC+class
- OC中字典基本概念和常用方法(NSDictionary和NSMutableDictionary)
- 【Objective-C】OC中字典基本概念和常用方法(NSDictionary和NSMutableDictionary)
- OC基础—集合之NSSet、NSDictionary(字典)、NSMutableDictionary
- 05.黑马程序员-NSDictionary、NSMutableDictionary
- OC学习之道:OC对象,字典,集合的使用方法NSDictionary,NSMutableDictionary, NSSet,NSMutableSet,NSCountedSet
- iOS开发之OC篇(4)—— NSDictionary、NSMutableDictionary
- 黑马程序员——OC语言日志——NSMutableString和NSMutableArray 的介绍及使用
- 黑马程序员_Foundation_NSSet,NSDictionary,NSValue,NSDate,NSNumber
- OC-字典常用操作(NSDictionary、NSMutableDictionary)
- NSMutableString NSNumber NSValue NSDate NSArray
- 黑马程序员——Objective-C学习之不可变与可变字典(NSDictionary\NSMutableDictionary)