天天看點

黑馬程式員 OC語言 - 9 NSDictionary、NSMutableDictionary、NSNumber、NSDate、NSValue

若排版有錯誤,請檢視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}")

繼續閱讀