若排版有錯誤,請檢視PDF版:http://pan.baidu.com/s/1dDnHmDz
一、 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];
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之是以能包裝基本資料類型為對象,是因為繼承了NSValue
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}")