• NSDictionary


    简单介绍一下NSDictionary用法:

    main:

      1 //
      2 //  main.m
      3 //  NSDictionary
      4 //
      5 //  Created by dingxiaowei on 13-5-15.
      6 //  Copyright (c) 2013年 dingxiaowei. All rights reserved.
      7 //
      8 
      9 #import <Foundation/Foundation.h>
     10 #import "Student.h"
     11 #pragma mark - 字典的创建
     12 void dicCreate(){
     13     //NSDictionary一旦创建是不可变的  可变的是NSMutableDictionary
     14     //创建一个键值对
     15     NSDictionary  *dic=[NSDictionary dictionaryWithObject:@"dingxiaowei" forKey:@"10141303"]; //只能放OC对象,不能放基本数据类型  注意:不能处理中文
     16     //创建多个键值对(最常用的初始化方法)
     17     dic=[NSDictionary dictionaryWithObjectsAndKeys:@"cl",@"10141301",
     18                                                    @"cey",@"10141302",
     19                                                    @"dxw",@"10141303", nil];
     20     //其他创建方法
     21     NSArray *objs=[NSArray arrayWithObjects:@"v1",@"v2",@"v3", nil];
     22     NSArray *keys=[NSArray arrayWithObjects:@"k1",@"k2",@"k3", nil];
     23     dic=[NSDictionary dictionaryWithObjects:objs forKeys:keys];
     24     NSLog(@"字典是:%@",dic);
     25 }
     26 #pragma mark - 字典的用法
     27 void dicUse(){
     28     //创建多个键值对(最常用的初始化方法)
     29     NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:
     30                        @"v1",@"k1",
     31                        @"cey",@"10141302",
     32                        @"dxw",@"10141303", nil];
     33     NSLog(@"count:%zi",[dic count]);
     34     //由于NSDictionary是不可变的,所以一旦创建只能查询,不能更改
     35     id obj=[dic objectForKey:@"k1"];
     36     NSLog(@"k1-%@",obj);
     37 
     38     //将字典写入文件中
     39     NSString *path=@"/Users/dingxiaowei/Desktop/dictionary.xml";
     40     if([dic writeToFile:path atomically:YES]){
     41         NSLog(@"字典写入到文件成功");
     42     }
     43     //读取xml的字典文件
     44     dic=[NSDictionary dictionaryWithContentsOfFile:path];
     45     NSLog(@"文件读取成功\ndic:%@",dic);
     46 
     47     //返回所有的keys和values
     48     NSArray *keys=[dic allKeys];
     49     NSArray *values=[dic allValues];
     50     NSLog(@"所有的keys是:%@\n所有的值是:%@",keys,values);
     51 
     52     //查询一个value对于的多个key
     53     dic=[NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v1",@"k3",nil];
     54     keys=[dic allKeysForObject:@"v1"];
     55     NSLog(@"keys:%@",keys);
     56 
     57     //根据多个key取出对于的value
     58     //注意:当key找不到对于的value时候,就用marker来代替
     59     NSArray *array1=[NSArray array];
     60     array1=[dic objectsForKeys:[NSArray arrayWithObjects:@"k1",@"k2", @"k4",nil] notFoundMarker:@"not-found"];//如果找不到对于的object 就用marker代替 比如这儿没有k4
     61     NSLog(@"找到的值%@",array1);
     62 }
     63 #pragma mark - 遍历字典
     64 void dicFor(){
     65     //初始化字典
     66     NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3", nil];
     67     //遍历字典所有的key
     68     for (id key in dic) {
     69         id value=[dic objectForKey:key];
     70         NSLog(@"普通遍历:%@-%@",key,value);
     71     }
     72 
     73     //key迭代器遍历
     74     NSEnumerator *enumer=[dic keyEnumerator];
     75     id key=nil;
     76     while (key=[enumer nextObject]) {
     77         id value=[dic objectForKey:key];
     78         NSLog(@"key迭代器遍历:%@-%@",key,value);
     79     }
     80 
     81     //value迭代器
     82     //对象迭代器
     83     //[dic objectEnumerator];
     84 
     85     //lblock遍历(每调遍历一次键值就调用一次block
     86     [dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
     87         NSLog(@"block迭代器遍历:%@-%@",key,obj);
     88     }];
     89 }
     90 #pragma mark - 字典的内存管理
     91 void dicMemory(){
     92     Student *stu1=[Student studentWithName:@"cl"];
     93     Student *stu2=[Student studentWithName:@"cey"];
     94     Student *stu3=[Student studentWithName:@"dxw"];
     95     //字典会自动销毁,一般静态创建的对象都不需要我们自己释放,自动释放的时候会对key和value对象进行一次release操作
     96     NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:stu1,@"k1",stu2,@"k2",stu3,@"k3",nil]; //注意:把一个对象塞给字典时会进行一次retain时候
     97     /*[stu1 retain];
     98     [stu2 retain];
     99     [stu3 retain];*/
    100 
    101     
    102     NSLog(@"dic%@",dic);
    103 }
    104 
    105 int main(int argc, const char * argv[])
    106 {
    107 
    108     @autoreleasepool {
    109 
    110         //dicCreate();
    111         //dicUse();
    112         //dicFor();
    113         dicMemory();
    114     }
    115     return 0;
    116 }
    View Code

    Student.h

    1 #import <Foundation/Foundation.h>
    2 
    3 @interface Student : NSObject
    4 @property(nonatomic,retain)NSString *name;
    5 +(id)studentWithName:(NSString *)name;
    6 @end
    View Code

    Student.m

     1 #import "Student.h"
     2 
     3 @implementation Student
     4 
     5 
     6 +(id)studentWithName:(NSString *)name{
     7     Student *stu=[[[Student alloc] init] autorelease];
     8     stu.name=name;
     9     return stu;
    10 }
    11 
    12 -(NSString *)description{
    13     return _name;
    14 }
    15 
    16 -(void)dealloc{
    17     NSLog(@"名字为%@被销毁了",_name);
    18     [_name release];
    19     [super dealloc];
    20 }
    21 
    22 @end
    View Code
  • 相关阅读:
    Zabbix常见问题手册
    Shell脚本常用语句
    ZABBIX定义宏变量
    Zabbix4.0系统配置事件通知
    c++ 八皇后问题(转载)
    (c++)数据结构顺序表编码练习
    JPA的事务注解@Transactional使用总结(转)
    小程序开发流程(java后端)
    连接远程数据库,得到数据插入本地表中
    php复制目录
  • 原文地址:https://www.cnblogs.com/dingxiaowei/p/3082242.html
Copyright © 2020-2023  润新知