1. 程式人生 > >NSMutableDictionary 和 NSDictionary的區別與用法大全

NSMutableDictionary 和 NSDictionary的區別與用法大全

NSDictionary

初始化新字典,新字典包含otherDic

NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];

以檔案內容初始化字典

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

       

NSArray *objects=[NSArray arrayWithObjects:@"v1",@"v2",@"v3", nil];

        NSArray *keys=[NSArray arrayWithObjects:@"k1",@"k2",@"k3", nil];

        dic=[NSDictionary dictionaryWithObjects:objects forKeys:keys];

 

//類方法

    NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"沐風", @"name", @"呵呵", @"sex", @"金紫荊韓式鬆骨", @"address", @"呵呵", @"exo", nil];

    //物件方法

//    NSDictionary *dictionary = [[NSDictionary alloc]initWithObjectsAndKeys:@"沐風", @"name", @"呵呵", @"sex", @"金紫荊韓式鬆骨", @"address", nil];

    //現在常用以下方法

//    NSDictionary *dictionary = @{@"name":@"沐風", @"sex":@"呵呵", @"address":@"金紫荊韓式鬆骨",@"exo":@"呵呵"};    

    //建立空字典

//    NSDictionary *dictionaty = [NSDictionary dictionary];

    //得到詞典的數量

    NSInteger count = [dictionary count];

    NSLog(@"詞典的數量為: %ld",count);

        //根據key查value

        NSLog(@"%@", [dictionary objectForKey:@"name"]);

        NSLog(@"%@", dictionary [@"name"]);

 

        //根據value查詢key

        NSLog(@"%@", [dictionary allKeysForObject:@"呵呵"]);

        

    //得到詞典中所有KEY值

    NSEnumerator * enumeratorKey = [dictionary keyEnumerator];

    //快速列舉遍歷所有KEY的值

    for (NSObject *object in enumeratorKey) {

        NSLog(@"遍歷KEY的值: %@",object);

    }

    //得到詞典中所有Key值

    NSLog(@"%@", dictionary.allKeys);//allkeys 屬性

    

    //得到詞典中所有Value值

    NSEnumerator * enumeratorValue = [dictionary objectEnumerator];

    //快速列舉遍歷所有Value的值

    for (NSObject *object in enumeratorValue) {

        NSLog(@"遍歷Value的值: %@",object);

    }

    //得到詞典中所有Value值

    NSLog(@"%@", dictionary.allValues);

    //遍歷詞典中所有Value值

    for (NSString *key in dictionary.allKeys ) {

        NSLog(@"%@", [dictionary objectForKey:key]);

    }

  • Block遍歷

   [dict enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *obj, BOOL *stop) {
        NSLog(@"key = %@, value = %@", key, obj);
    }];
  • 鍵值對集合的特點
  1. 字典儲存的時候,必須是"鍵值對"的方式來儲存(同時鍵不要重複)
  2. 鍵值對中儲存的資料是"無序的".
  3. 鍵值對集合可以根據鍵, 快速獲取資料.

NSDictionary檔案操作

  • 將字典寫入檔案中

    • - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
    • - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
    • 存結果是xml檔案格式,但蘋果官方推薦為plist字尾。
  • 示例

    NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};
    BOOL flag = [dict writeToFile:@"/Users/LNJ/Desktop/dict.plist" atomically:YES];
    NSLog(@"flag = %i", flag);
  • 從檔案中讀取字典
NSDictionary *newDict = [NSDictionary dictionaryWithContentsOfFile:@"/Users/LNJ/Desktop/dict.plist"];
    NSLog(@"newDict = %@", newDict);

NSMutableDictionary

初始化一個空的可變字典

NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];

NSDictionary *dic3 = [NSDictionary dictionaryWithObject:@"v3" forKey:@"key3"];

向字典2物件中新增整個字典物件3

[dic2 addEntriesFromDictionary:dic3];

向字典2物件中最佳一個新的key3和value3

[dic2 setValue:@"value3" forKey:@"key3"];

初始化一個空的可變字典

NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];

將空字典1物件內容設定與字典2物件相同

[dic1 setDictionary:dic2];

將字典中key1對應的值刪除

[dic1 [email protected]"key1"];

NSArray *array = [NSArray arrayWithObjects:@"key1", nil];

根據指定的陣列(key)移除字典1的內容

[dic2 removeObjectsForKeys:array];

移除字典所有物件

[dic1 removeAllObjects];