OC中字典基本用法
来源:互联网 发布:麦克雷爆头伤害数据 编辑:程序博客网 时间:2024/06/06 05:26
#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];}@endint 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;}
1 0
- OC中字典基本用法
- c#中字典(Dictionary)基本用法
- python中字典的基本用法
- OC中NSValue和NSNumber基本用法
- OC中NSData的基本用法
- 黑马程序员——OC中字典的用法总结
- OC中字典
- OC当中字典的用法
- 字典的基本用法
- 字典的基本用法
- oc基本用法
- oc中 NSArray NSDictionary NSSet的一些基本用法
- Swift 字典 Dictionary基本用法
- OC类别-基本用法
- iOS OC NSData基本用法
- OC中NSString 用法
- OC中NSArray用法
- oc中NSString用法
- 几个高危端口
- 【oracle】Oracle数据库TNS常见错误的解决方法
- Android通过在布局文件中设置include实现xml布局的复用
- Maven项目启动时报错org.springframework.web.context.ContextLoaderListener
- 常用易混方法及其参数
- OC中字典基本用法
- 博客系统要点的一些回顾
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- PhoneGap/Cordova学习笔记--1.Android环境搭建
- 如何集成inmobi到ios
- c++中vector的用法详解
- [Android教程] Android系统Intent中的Uri使用
- C++学习:初识类
- 卸载iSCSI磁盘阵列