您的位置:首页 > 移动开发 > Objective-C

Objective-C(十三、字典类)——iOS开发基础

2015-07-05 15:43 711 查看
结合之前的学习笔记以及参考《Objective-C编程全解(第三版)》,对Objective-C知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~

十三、字典类

注意:下面的所提及的方法都是常用方法,全部列出不大现实,参考Xcode帮助文档即可~

一、不可变字典NSDictionary

1、基础知识

(1)字典中的数据以键-值对(key-value)的形式来保存,一个键值对成为entry;

(2)键和值可以为任意对象,一般以字符串作为键key;

(3)字典的键必须唯一,nil不能作字典的键;

(4)字典中的元素是无序的;

(5)键作为元素索引使用,通过key查找相应地value

2、新语法

NSDictionary *dic = @{@"Zhu" : @16,
                       @"Hu" : @18
 };                //新语法,冒号两端空格,花括号
 NSLog(@"%@",dic[@"Zhu"]);               //获取value值新语法,中括号内为key


3、字典的创建和初始化

+ (instancetype)dictionary;    //空字典
 + (instancetype)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key;    //返回一个字典对象,只包含一个键值对
 + (instancetype)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(NSUInteger)cnt;                    //由objects和keys数组中的元素作为键值对来初始化,数组中包含的元素个数由count决定,返回一个字典对象
 - (instancetype)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;    //从objects和keys数组中各取出一个元素作为value和key的键值对,返回包含该键值对的字符对象;
 - (instancetype)initWithObjectsAndKeys:(id)object,(id)key, nil;
 - (instancetype)initWithDictionary:(NSDictionary *)otherDictionary;


4、访问元素

- (NSUInteger)count;
 - (id)objectForKey:(id)aKey;   //返回akey对应的值,不存在返回nil
 - (NSArray *)allKeys;          //返回字典中包含的所有关键字
 - (NSEnumerator *)keyEnumerator;   //返回可访问字典所有key的快速枚举器
 - (NSEnumerator *)objectEnumerator;//返回可访问字典所有value的快速枚举器
 - (NSArray *)allKeysForObject:(id)anObject;    //返回anObject在字典中对应的所有关键字


部分方法代码练习

NSArray *array = [NSArray arrayWithObjects:@"a",@"a",@"c", nil];
        NSArray *names = [NSArray arrayWithObjects:@1,@2,@3, nil];
        NSDictionary *dic1 = [[NSDictionary alloc] initWithObjects:array forKeys:names];
        NSLog(@"%@",[dic1 allKeysForObject:@"a"]);

        NSDictionary *dict = @{@"Zhu" : @16,
                              @"Hu" : @18
                              };                //新语法
        NSLog(@"%@",dict[@"Zhu"]);               //获取value值新语法
        NSLog(@"%@",[dict objectForKey:@"Zhu"]);
        NSLog(@"%@",[dict allKeys]);


output:

2015-07-05 15:40:19.038 exercise_字典[1099:75841] (
    1,
    2
)
2015-07-05 15:40:19.039 exercise_字典[1099:75841] 16
2015-07-05 15:40:19.039 exercise_字典[1099:75841] 16
2015-07-05 15:40:19.040 exercise_字典[1099:75841] (
    Zhu,
    Hu
)
2015-07-05 15:40:19.040 exercise_字典[1099:75841] Hello, World!


二、可变字典NSMutableDictionary

1、初始化

- (instancetype)initWithCapacity:(NSUInteger)numItems; //指定长度


2、增减键值对

//添加同时也可替换!!

- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;    //添加元素,不能为nil;同时可以用来替换元素,因为键值唯一,如果添加的已存在,会替换之前的元素


- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;  //otherDictionary的数据追加到当前字典,若有关键字相同,以otherDictionary的为最终值
 - (void)setDictionary:(NSDictionary *)otherDictionary;    //otherDictionary覆盖当前字典,当前字典所有数据都删除
 - (void)removeObjectForKey:(id)aKey;   //删除akey对应的键值对
 - (void)removeObjectsForKeys:(NSArray *)keyArray;  //删除键值为keyArray中元素的所有键值对
 - (void)removeAllObjects;              //删除所有键值对
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: