OC中字典基本用法
2015-12-26 17:14
141 查看
#import <Foundation/Foundation.h> @interface Contact : NSObject @property (nonatomic, retain)NSString *name; @property (nonatomic, retain)NSString *number; - (instancetype)initWithName:(NSString *)name number:(NSString *)number; + (instancetype)contactWithName:(NSString *)name number:(NSString *)number; @end @implementation Contact - (instancetype)initWithName:(NSString *)name number:(NSString *)number{ self = [super init]; if (self) { _name = name; _number = number; } return self; } + (instancetype)contactWithName:(NSString *)name number:(NSString *)number{ Contact *contact = [[Contact alloc] initWithName:name number:number]; return contact; } - (NSString *)description { return [NSString stringWithFormat:@"name:%@ number:%@", self.name, self.number]; } @end int main(int argc, const char * argv[]) { @autoreleasepool { //字典:用来存储键值对应的条目,条目之间无序只能通过键获取值 #pragma mark - 不可变字典 //创建 //初始化方法 NSDictionary *initDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"zhangsan", @"name", @27, @"age", @"m", @"sex", nil]; NSLog(@"initDict = %@", initDict); //便利构造器创建 NSDictionary *initDict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan", @"name", @27, @"age", @"m", @"sex", nil]; NSLog(@"initDict = %@", initDict1); //用已有的字典创建 NSDictionary *initDict2 = [NSDictionary dictionaryWithDictionary:initDict1]; NSLog(@"initDict2 = %@", initDict2); //字面量创建 NSDictionary *initDict3 = @{@"name":@"zhangsan", @"age":@27, @"sex":@"m"}; NSLog(@"initDict3 = %@", initDict3); //功能 //获取字典中条目的数量 NSInteger count = [initDict1 count]; NSLog(@"count = %ld", count); NSInteger count1 = initDict1.count; NSLog(@"count1 = %ld", count1); //获取所有的key值(使用数组接受所有的key值) NSArray *keyArray = [initDict3 allKeys]; NSLog(@"dictArray = %@", keyArray); //通过key值获取对应的Value //在不知道Value的对象类型的时候可以使用id接受 id object = [initDict objectForKey:@"name"]; NSLog(@"object = %@", object); //已知Value的类型 NSInteger age = 0; [[initDict objectForKey:@"age"] getValue:&age]; NSLog(@"age = %ld", age); //字面量获取 id object1 = initDict[@"sex"]; NSLog(@"object = %@", object1); //获取说有的Value NSArray *valueArray = [initDict1 allValues]; NSLog(@"valueArray = %@", valueArray); //遍历字典 for (int i = 0; i < initDict1.count; i++) { NSLog(@"%@:%@",keyArray[i], [initDict1 valueForKey:keyArray[i]]); } #pragma mark - 可变字典 //可变字典继承不可变字典 //预留两个空间,返回首地址 NSMutableDictionary *mInitDict = [[NSMutableDictionary alloc] initWithCapacity:2]; //增加条目(key值和value都不能为nil) [mInitDict setObject:@"zhangsan" forKey:@"name"]; [mInitDict setObject:@"m" forKey:@"sex"]; //字面量添加 mInitDict[@"age"] = @18; NSLog(@"mInitDict = %@", mInitDict); //如果添加的条目key值已经存在,再次添加时回覆盖key值所对应的value [mInitDict setObject:@"lishi" forKey:@"name"]; NSLog(@"mInitDict = %@", mInitDict); //删除 //删除一个条目(removeObjectsForKey为删除多对) [mInitDict removeObjectForKey:@"age"]; NSLog(@"mInitDict = %@", mInitDict); //删除所有条目 [mInitDict removeAllObjects]; NSLog(@"mInitDict = %@", mInitDict); #pragma mark - example //创建联系人分组 NSMutableDictionary *contacts = [[NSMutableDictionary alloc] initWithCapacity:2]; for (int i = 0; i < 26; i++) { NSMutableArray *group = [[NSMutableArray alloc] initWithCapacity:2]; [contacts setObject:group forKey:[NSString stringWithFormat:@"%c", 'A'+i]]; } //将联系人添加到对应的分组里面 Contact *person1 = [Contact contactWithName:@"libai" number:@"4587965"]; if (person1.name.length == 0 && person1.number.length == 0) { NSLog(@"添加失败"); }else { NSString *capitalName = [[person1.name substringToIndex:1] capitalizedString]; NSMutableArray *group = [contacts objectForKey:capitalName]; [group addObject:person1]; } NSLog(@"contact = %@", contacts); NSLog(@"Hello, World!"); } return 0; }
相关文章推荐
- Delegate 代理委托 +block+类别Category
- (八)外部中断的设计与应用
- Android通过在布局文件中设置include实现xml布局的复用
- [IOS开发教程] iOS获取设备信息
- 几个高危端口
- WebSocket使用教程 - 带完整实例
- JS面向对象的程序设计
- 如何使用CSS3创建一个漂亮的图标
- android Studio 配置LUA 开发环境
- 判断素数、输出素数以及对称素数---C++
- 织梦dedecms中html和xml格式的网站地图sitemap制作方法
- Emgucv安装
- 【郑轻】[1415]A+B Again!
- 读书笔记——《你的灯亮着吗》(1/2)
- tuzicms美化input(file)浏览按钮代码
- [IOS开发教程] IOS UIDevice & IOS检测屏幕旋转实例
- java.lang.InstantiationException错误
- kinect2.0+opencv获取图像和深度图像
- 简单堆栈理解
- 控制面板中找不到Internet信息服务(IIS)管理器