Objective-c语言_不可变字典
2015-12-16 10:50
645 查看
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
//字典
/*
字典 NSDictionnary//NSMutableDictionary
1.概念:字典是关键字:‘key’及其定义的值'value'构成的集合,及其它是由key-value组成的键值对的集合,
通常来讲,'key'一般式'NSString'类型的,‘value’是OC中任意对象。对于字典来讲,我们就是通过key来访问value
2.为什么有了数组后,还要字典呢?在由大量的数据或者频繁查询信息,使用字典效率更高,因为字典是
采用键查询
的优化存储方法的。
3.在OC中我们使用'NSDictionary'和'NSMutableDictionary'来表示字典。其中‘NSMutableDictionary’
是‘NSDictionary’的子类
*/
//初始化
//创建一个空的字典
NSDictionary *dictionary1=[[NSDictionary
alloc] init];
NSDictionary *dictionary2=[NSDictionary
dictionary];//自己的初始化方法
//创建一个键值对的字典
//创建有一个键值对的字典
NSDictionary *dictionary3=[NSDictionary
dictionaryWithObject:@"Rick"
forKey:@"name"];
//NSDictionary *dictionary3=[NSDictionary dictionaryWithObjects:@"Rick" forKeys:@"name"];这是错误的多了个s
//创建多个键值对的字典
//值在前名在后
NSDictionary *dictionary4=[NSDictionary
dictionaryWithObjectsAndKeys:@"Rick",@"name",@25,@"age",@"GZ",@"address",
nil];//输入多个键值对,@25删除25没有报错但不要这样写
//字典里存放的元素都要是对象类型才行,如果是基本数据类型,要先把这些基本数据类型,进行封装,然后
//放到这些数组里面
//value再去,key在后,value和key要成双出现比如dictionary4
NSLog(@"dictionary4=%@",dictionary4);//输出是无序的
//注意在字典键值是无序的
//根据一个字典创建一个字典
NSDictionary *dictionary5=[NSDictionary
dictionaryWithDictionary:dictionary4];//放字典
NSLog(@"dictionary5=%@",dictionary5);
if (dictionary5 == dictionary4)
{
NSLog(@"aaa");//不输出
}
NSString *string=@"aaaa";
NSString *string2=[NSString
stringWithString:string];
if (string==string2)
{
NSLog(@"bbb");//浅拷贝执行
}
//创建键值对用@{}数组用@[]
//新语法创建字典
NSDictionary *dictionary6=@{};
//新语法创建一个键值对
NSDictionary *dictionary7=@{@"name":@"Rice"};
//创建多个键值对
NSDictionary *dictionary8=@{@"name":@"Rick",@"age":@25,@"address":@"GZ"};
NSLog(@"dictionary8=%@",dictionary8);
//从本地读取字典
NSDictionary *dictionary9=[NSDictionary
dictionaryWithContentsOfFile:@""];
//网络读取字典
NSDictionary *dictionary10=[NSDictionary
dictionaryWithContentsOfURL:[NSURL
URLWithString:@"http://www.baidu.com"]];
//字典中键值对的数量
NSUInteger count=dictionary4.count;
NSLog(@"%lu",count);
//如何访问我们的字典
//通过key访问字典中对应的值
NSString *name=[dictionary4
objectForKey:@"name"];
NSLog(@"name=%@",name);
//等价于
//新语法
NSString *newName=dictionary4[@"name"];
NSLog(@"newName=%@",newName);
//如何遍历字典中所有得值
//表示字典中所有的key
NSArray *keyArray= dictionary4.allKeys;
//点语法的本质是set和get
//字典中所有的value
NSArray *valuesArray = dictionary4.allValues;
NSLog(@"valuesArray=%@",valuesArray);
//使用for循环输出
for (int i=0; i<valuesArray.count; i++)
{
NSLog(@"%@=%@",keyArray[i],valuesArray[i]);
NSLog(@"%@=%@",keyArray[i],[dictionary4
objectForKey:keyArray[i]]);
NSLog(@"%@=%@",keyArray[i],dictionary4[keyArray[i]]);//是用新语法
}
//使用快速枚举
for(NSString *key
in keyArray)
{
NSLog(@"%@=%@",key,[dictionary4
objectForKey:key]);
//把keyArray里面的值赋值给key
//等价于
NSLog(@"%@=%@",key,dictionary4[key]);
}
//使用枚举器遍历
NSEnumerator *enumerator=[keyArray
objectEnumerator];
NSString *key;
while (key=[enumerator
nextObject])
{
NSLog(@"%@=%@",key,dictionary4[key]);
}
//在不可变字典中不能存储相同的key,如果相同的key则只会第一个key对应的value
NSDictionary *dictionary=[NSDictionary
dictionaryWithObjectsAndKeys:@"Rick",@"name",@25,@"age",@"GZ",@"address",
nil];
NSLog(@"--------------------");
for (NSString *key
in [dictionary allKeys])
{
NSLog(@"%@=%@",key,dictionary[key]);
}
}
return 0;
}
int main(int argc,
const char * argv[]) {
@autoreleasepool {
//字典
/*
字典 NSDictionnary//NSMutableDictionary
1.概念:字典是关键字:‘key’及其定义的值'value'构成的集合,及其它是由key-value组成的键值对的集合,
通常来讲,'key'一般式'NSString'类型的,‘value’是OC中任意对象。对于字典来讲,我们就是通过key来访问value
2.为什么有了数组后,还要字典呢?在由大量的数据或者频繁查询信息,使用字典效率更高,因为字典是
采用键查询
的优化存储方法的。
3.在OC中我们使用'NSDictionary'和'NSMutableDictionary'来表示字典。其中‘NSMutableDictionary’
是‘NSDictionary’的子类
*/
//初始化
//创建一个空的字典
NSDictionary *dictionary1=[[NSDictionary
alloc] init];
NSDictionary *dictionary2=[NSDictionary
dictionary];//自己的初始化方法
//创建一个键值对的字典
//创建有一个键值对的字典
NSDictionary *dictionary3=[NSDictionary
dictionaryWithObject:@"Rick"
forKey:@"name"];
//NSDictionary *dictionary3=[NSDictionary dictionaryWithObjects:@"Rick" forKeys:@"name"];这是错误的多了个s
//创建多个键值对的字典
//值在前名在后
NSDictionary *dictionary4=[NSDictionary
dictionaryWithObjectsAndKeys:@"Rick",@"name",@25,@"age",@"GZ",@"address",
nil];//输入多个键值对,@25删除25没有报错但不要这样写
//字典里存放的元素都要是对象类型才行,如果是基本数据类型,要先把这些基本数据类型,进行封装,然后
//放到这些数组里面
//value再去,key在后,value和key要成双出现比如dictionary4
NSLog(@"dictionary4=%@",dictionary4);//输出是无序的
//注意在字典键值是无序的
//根据一个字典创建一个字典
NSDictionary *dictionary5=[NSDictionary
dictionaryWithDictionary:dictionary4];//放字典
NSLog(@"dictionary5=%@",dictionary5);
if (dictionary5 == dictionary4)
{
NSLog(@"aaa");//不输出
}
NSString *string=@"aaaa";
NSString *string2=[NSString
stringWithString:string];
if (string==string2)
{
NSLog(@"bbb");//浅拷贝执行
}
//创建键值对用@{}数组用@[]
//新语法创建字典
NSDictionary *dictionary6=@{};
//新语法创建一个键值对
NSDictionary *dictionary7=@{@"name":@"Rice"};
//创建多个键值对
NSDictionary *dictionary8=@{@"name":@"Rick",@"age":@25,@"address":@"GZ"};
NSLog(@"dictionary8=%@",dictionary8);
//从本地读取字典
NSDictionary *dictionary9=[NSDictionary
dictionaryWithContentsOfFile:@""];
//网络读取字典
NSDictionary *dictionary10=[NSDictionary
dictionaryWithContentsOfURL:[NSURL
URLWithString:@"http://www.baidu.com"]];
//字典中键值对的数量
NSUInteger count=dictionary4.count;
NSLog(@"%lu",count);
//如何访问我们的字典
//通过key访问字典中对应的值
NSString *name=[dictionary4
objectForKey:@"name"];
NSLog(@"name=%@",name);
//等价于
//新语法
NSString *newName=dictionary4[@"name"];
NSLog(@"newName=%@",newName);
//如何遍历字典中所有得值
//表示字典中所有的key
NSArray *keyArray= dictionary4.allKeys;
//点语法的本质是set和get
//字典中所有的value
NSArray *valuesArray = dictionary4.allValues;
NSLog(@"valuesArray=%@",valuesArray);
//使用for循环输出
for (int i=0; i<valuesArray.count; i++)
{
NSLog(@"%@=%@",keyArray[i],valuesArray[i]);
NSLog(@"%@=%@",keyArray[i],[dictionary4
objectForKey:keyArray[i]]);
NSLog(@"%@=%@",keyArray[i],dictionary4[keyArray[i]]);//是用新语法
}
//使用快速枚举
for(NSString *key
in keyArray)
{
NSLog(@"%@=%@",key,[dictionary4
objectForKey:key]);
//把keyArray里面的值赋值给key
//等价于
NSLog(@"%@=%@",key,dictionary4[key]);
}
//使用枚举器遍历
NSEnumerator *enumerator=[keyArray
objectEnumerator];
NSString *key;
while (key=[enumerator
nextObject])
{
NSLog(@"%@=%@",key,dictionary4[key]);
}
//在不可变字典中不能存储相同的key,如果相同的key则只会第一个key对应的value
NSDictionary *dictionary=[NSDictionary
dictionaryWithObjectsAndKeys:@"Rick",@"name",@25,@"age",@"GZ",@"address",
nil];
NSLog(@"--------------------");
for (NSString *key
in [dictionary allKeys])
{
NSLog(@"%@=%@",key,dictionary[key]);
}
}
return 0;
}
相关文章推荐
- Objective-c语言_数组练习题2:
- Objective-c语言_数组练习题1
- Objective-C语言——NSMutableDictionary可变字典
- Objective-C语言——NSDictionary不可变字典
- Object-C 中各数据类型转换 NSData转NSString,Byte,UIImage
- object-c画笔的简单实现
- object-c画笔的简单实现
- Nullability and Objective-C
- Spring MVC 接收json自动转换JSONObject
- Object C中创建线程的方法有NSThread,GCD, NSOperation
- Objective-c CoreData
- Objective-C中的内存管理
- CSS Object Model View整理
- org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread
- Objective-C 字符串一 "不可变字符串"
- Objective-C 字符串二 "可变字符串"
- (Foundation)NSObject 、 NSString 、 NSMutableString
- Objective-c---分类 、 扩展 、 ARC
- Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量
- Objective-C--- 多态 、 协议