您的位置:首页 > 其它

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: