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


结合之前的学习笔记以及参考《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;              //删除所有键值对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值