黑马程序员--OC之Foundation框架的使用<三>

黑马程序员--OC之Foundation框架的使用<三>

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1、NSDictionary介绍
1)什么是NSDictionary
NSDictionary翻译过来叫做”字典”
日常生活中, “字典”的作用: 通过一个拼音或者汉字, 就能找到对应的详细解释
NSDictionary的作用类似: 通过一个key(键), 就能找到对应的value(值)
NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改
2)NSDictionary的创建
+ (instancetype)dictionary;
+ (instancetype)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key; // objectForKey,根据键取值。
+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
4)键值对集合的特点
字典存储的时候,必须是"键值对"的方式来存储(同时键不要重复)
键值对中存储的数据是"无序的".
键值对集合可以根据键, 快速获取数据.3)快速创建字典
@{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"};
2、NSDictionary基本使用方法
-(NSUInteger)count;
返回字典的键值对数目
-(id)objectForKey:(id)aKey;
根据key取出value
1)快速遍历
for (NSString *key in dict) { }
2)Block遍历
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {}];


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 创建一个空字典
        NSDictionary *dict1 = [NSDictionary dictionary];
        //创建一个字典一组键值对的字典
        NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"刘德华"forKey:@"ldh"];
        //创建一个字典,存放一组键值对,注意:NSDictionary的valut.key值都必须是对象
        NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"k1",@"value2",@"k2", nil];
        //快速创建一个字典
        NSDictionary *dict4 = @{@"zs":@"zhangsan",@"ls":@"lisi"};
        NSLog(@"%@",dict1);
        NSLog(@"%@",dict2);
        NSLog(@"%@",dict3);
        NSLog(@"%@",dict4);
        //注意:key值不能重复,如果重复了,也不会报错,最后添加的不能保存到字典中
        //获取字典长度
        NSLog(@"%lu",dict4.count);
        //根据key值取value值
        NSString *str = [dict4 objectForKey:@"zs"];
        NSLog(@"%@",str);
        //字典遍历问题
        //第一步:获取所有的key
        //第二步:根据key获取value
        for (NSString *key in dict4){
            NSLog(@"key=%@,value =%@",key,[dict4 objectForKey:key]);
        }
        [dict4 enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
            NSLog(@"%@ --->%@",key,obj);
        }];
    
    }
    return 0;
}
3、NSDictionary的简写及文件操作
1)NSDictionary的简写形式
NSDictionary的创建:
以前
[NSDictionary dictionaryWithObjectsAndKeys:@"Jack", @"name", @"男", @"sex", nil];
现在
@{@"name": @"Jack", @"sex" : @"男”};
2)NSDictionary获取元素
以前
[dict objectForKey:@"name”];
现在
dict[@"name”];
3)NSDictionary文件操作
将字典写入文件中
-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
-(BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
4)从文件中读取字典到内存中
保存结果是xml文件格式,但苹果官方推荐为plist后缀。
把字典放到NSArray中,调用array的writeToFile
+ (id)dictionaryWithContentsOfFile:(NSString *)path;
+ (id)dictionaryWithContentsOfURL:(NSURL *)url;


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //1 用简写形式定义一个字典
        NSDictionary *dict = @{@"ldh":@"liudehua",@"zxy":@"zhangxueyou",@"zxc":@"zhouxingci"};
        //2用简写形式获取字符
        NSLog(@"%@",dict[@"ldh"]);
        //3把字典保存到文件中
        BOOL isWrite = [dict writeToFile:@"/Users/yufeng/Desktop/dict.plist" atomically:YES];
        if (isWrite) {
            NSLog(@"文件写入成功");
        }
        //4从文件中读取字典
        NSDictionary *readdict = [NSDictionary dictionaryWithContentsOfFile:@"/Users/yufeng/Desktop/dict.plist"];
        NSLog(@"文件读取成功如下:");
        NSLog(@"readdict=%@",readdict);
        
        NSArray *hnarr = [NSArray arrayWithObjects:@"zhumadian",@"zhengzhou", nil];
        NSArray *hbarr = [NSArray arrayWithObjects:@"shijianzhuang",@"baoding", nil];
        NSDictionary *citys = [NSDictionary dictionaryWithObjectsAndKeys:hnarr,@"hn",hbarr,@"hb", nil];
        NSLog(@"citys=%@",citys);
    }
    return 0;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值