博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSDictionary
阅读量:4953 次
发布时间:2019-06-12

本文共 3343 字,大约阅读时间需要 11 分钟。

 

//通过唯一的key找到对应的value(键 值)

//不可变

//通过索引找到内容

//也是只能放OC对象,不能放基本数据类型和空值

#pragma mark create dictionary

void dictCreate(){

//most commom used +

NSdictionary *dict=[NSDictionary dictionaryWithObject:@”v” forKey:@”key”];

//+method can’t change

dict=[NSDictionary dictoryWithObjectsAndKeys:

@”v1”,@”k1”,

@”v2”,@”k2”,

@”v3”,@”k3”,

@”v4”,@”k4”,

,nil];

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

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

dict=[NSDictionary dictoryWithObjects:objects forKeys:keys];

NSLog(@“%@”,dict);     //array->()  dict->{}

}

#pragma mark dict use

void dictUse(){

NSDictionary  *dict=[NSDictionary dictoryWithObjectsAndKeys:

@”v1”,@”k1”,

@”v2”,@”k2”,

@”v3”,@”k3”,

@”v4”,@”k4”,

,nil];

NSDictionary NSLog(@”count=%zi”,[dict count]);     //dict.count  how many couples

//通过key找value

NSLog(@”k2-> objectForKey:@”k2”]);//只能取值不能改值

//can write a dictionary to a file

NSString *path ”;

[dict writeToFile:path atomically:YES];

//从文件中读取字典对象(按照格式才能)

NSDictionary dict2=[NSDictionary dictonaryWithContentOfFile:path];

}

#pragma mark use2

void dictUse2(){

dict=[NSDictionary dictoryWithObjectsAndKeys:

@”v1”,@”k1”,

@”v2”,@”k2”,

@”v3”,@”k3”,

@”v1”,@”k4”,

,nil];

NSLog(@”dict all keys is”,[dict allKeys]);//他是无序的,需要的话NSArray去排序

//key是唯一 value不一定  不能一对多 可以多对一

//当一对多时返回所有的value

//all values

NSArray *array1=[dict allKeysForObject:@”v1”];

NSArray *objects=[dict allValues];

//根据多个key取出多个value

id objects=[dict objectForKeys:[NSArray arrayWithObjects:@”k1”,@”k2”,@”k4”,nil] notFoundMarker:@“not-found”]; //v1 v2

//notFoundMarker 如果找不到对应的值的时候就用marker来替代

}

#pragma mark traverse dictionary

void dictTraverse(){

dict=[NSDictionary dictoryWithObjectsAndKeys:

@”v1”,@”k1”,

@”v2”,@”k2”,

@”v3”,@”k3”,

@”v1”,@”k4”,

,nil];

//1

for(id  key in dict)//因为key是唯一{

id value=[dict objectForKey:key];

NSLog(@”%@=%@”,key,value);

}

 

}

#pragma mark  traverse dic with  enumerator

void dictTraverseDict(){

//2迭代器 key

dict=[NSDictionary dictoryWithObjectsAndKeys:

@”v1”,@”k1”,

@”v2”,@”k2”,

@”v3”,@”k3”,

@”v1”,@”k4”,

,nil];

NSEnumerator *enumer=[dict keyEnumerator];

id key=nil;

while(key=[enumer nextObject]){

id value=[dict objectForKey:key];

NSLog(@”%@=%@”,key,value);

}

//对象迭代器 value

NSEnumerator *enumer=[dict objectEnumerator];

}

#pragma mark  traverse dic with block

void dictTraverseDict(){

dict=[NSDictionary dictoryWithObjectsAndKeys:

@”v1”,@”k1”,

@”v2”,@”k2”,

@”v3”,@”k3”,

@”v1”,@”k4”,

,nil];

[dict enumerateKeysAndObjectsUsngBlock:^(id key,id obj,BOOL stop){

NSLog(@”%@=%@”,key,obj);

}];

}

#pragma mark sort key

 


#pragma mark memory management

Student.h

@property (nonatomic,retain)NSString * name;

+(id)studentWithName:(NSString *)name;

Student.m

+(id)studentWithName:(NSString *)name{

Student *stu=[[Student alloc]init];

stu.name=name;

return [stu autorelease];

}

-(void)dealloc{

NSLog(@”%@ is destroied”,self.name);//_name

[-_name release];

[super dealloc];

}

main.m

#import “Student.h”

//不管是key 还是value  都会对对象进行retain操作

void dicMemory(){

Student *stu1=[Student studentWithName:@”stu1”];

Student *stu2=[Student studentWithName:@”stu2”];

Student *stu3=[Student studentWithName:@”stu3”];

NSDictionary *dict=[NSDictionary dictoryWithObjectsAndKeys:

stu1,@”k1”,

stu2,@”k2”,

stu3,@”k3”,

,nil];

//when the dictionary is destroied key and value all released once

//但是字典不需我们销毁,注意是否是自动释放 

}

转载于:https://www.cnblogs.com/yesihoang/p/4549423.html

你可能感兴趣的文章
连接查询
查看>>
POJ-2187 Beauty Contest,旋转卡壳求解平面最远点对!
查看>>
向Tiny6410移植QT4.7.0版本
查看>>
[bzoj1500][NOI2005]维修数列
查看>>
面向对象抽象封装
查看>>
XCode的一些调试技巧
查看>>
python错误和异常学习笔记
查看>>
DLL中调用约定和名称修饰(三)
查看>>
你猜这个题输出啥?-- java基础概念
查看>>
DbGridEh中改变行的颜色
查看>>
Java_学生信息管理系统——数组版——尝试将main函数单独放了一个类,并加了文件...
查看>>
【原创】大叔问题定位分享(21)spark执行insert overwrite非常慢,比hive还要慢
查看>>
使用uiautomator做UI测试
查看>>
动态创建报表笔记
查看>>
java.util.concurrentmodificationexception 当在循环中 给List 添加对象或者 remove 对象是时候...
查看>>
Jenkins 获取 Git tag check out issue
查看>>
第一阶段一次评价
查看>>
HTML 中有用的字符实体
查看>>
JavaScript 将当地时间转换成其它时区
查看>>
TensorFlow入门教程集合
查看>>