Objective-C个人学习系列(3) NSDictionary NSMutableDictionary
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
//--------------------------NSDictionary-----------------------
//通过键-值对创建字典,先创建对象实例,再初始化对象
//- (instancetype)initWithObjectsAndKeys:(id)firstObject, , ...
NSDictionary * dic = [[NSDictionaryalloc] initWithObjectsAndKeys:
@"zhangsan",@"001",@"wangwu",@"002", nil];
//根据key返回对象值
NSString * s = [dic objectForKey:@"001"];
NSLog(@"%@",s);
//遍历字典,遍历出key,通过key得到object
for (NSString* key in dic) {
NSString* value = [dic objectForKey:key];
NSLog(@"%@",value);
}
NSArray *arrKey = [[NSArray alloc]initWithObjects:@"101",@"102",@"103",@"104", nil];
NSArray *arrValue = [[NSArray alloc]initWithObjects:@"张三",@"李四",@"王五",@"赵六", nil];
//通过现有的对象数组创建字典对象
//- (instancetype)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys
NSDictionary* dic2 = [[NSDictionary alloc]initWithObjects:arrValue
forKeys:arrKey];
for (NSString* key in dic2) {
NSString* value = [dic2 objectForKey:key];
NSLog(@"%@",value);
}
//通过类方法直接创建字典对象
NSDictionary *dd = [NSDictionary dictionaryWithObjects:arrValue
forKeys:arrKey];
for (NSString* key in dd) {
NSString* value = [dd objectForKey:key];
NSLog(@"%@",value);
}
//字典比较
//- (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary
//字典中内容相等返回YES,否则返回NO
BOOL isEqual = [dd isEqualToDictionary:dic];
NSLog(@"%hhd",isEqual); //Output:0
BOOL isEqual2 = [dd isEqualToDictionary:dic2];
NSLog(@"%hhd",isEqual2); //Output:1
//--------------------------NSMutableDictionary-----------------------
//创建可变字典
NSMutableDictionary* mDic = [[NSMutableDictionaryalloc] init] ;
NSNumber* num01 = [[NSNumber alloc] initWithInt:1001] ;
NSNumber* num02 = [[NSNumber alloc] initWithInt:1002] ;
NSNumber* num03 = [[NSNumber alloc] initWithInt:1003] ;
NSNumber* num04 = [[NSNumber alloc] initWithInt:1004] ;
NSNumber* num05 = [[NSNumber alloc] initWithInt:1005] ;
NSString* name01 = @"小刚";
NSString* name02 = @"小明";
NSString* name03 = @"小强";
NSString* name04 = @"小红";
NSString* name05 = @"小霞";
//添加键值对
[mDic setObject:name01 forKey:num01];
[mDic setObject:name02 forKey:num02] ;
[mDic setObject:name03 forKey:num03] ;
[mDic setObject:name04 forKey:num04] ;
[mDic setObject:name05 forKey:num05] ;
//如果添加的新元素的key与原来的字典中的key一样
//将原来key所对应的值覆盖掉
//不会添加新元素空间
[mDic setObject:name05 forKey:num01] ;
for (NSNumber* num in mDic)
{
NSLog(@"name = %@", [mDic objectForKey:num]);
}
//删除所有元素
//[mDic removeAllObjects] ;
//根据key删除一个元素
[mDic removeObjectForKey:num03] ;
[mDic removeObjectForKey:num02] ;
[mDic removeObjectForKey:num02] ;
for (NSNumber* num in mDic)
{
NSLog(@"name = %@", [mDic objectForKey:num]);
}
//创建删除关键字数组,(根据多个key删除多个元素)
NSArray* arrayDel = [NSArray arrayWithObjects:num04,num05, nil];
//根据关键字数组删除元素
[mDic removeObjectsForKeys:arrayDel] ;
NSLog(@"\n");
for (NSNumber* num in mDic)
{
NSLog(@"name = %@", [mDic objectForKey:num]);
}
}
}
更多内容参考官方文档:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference/Reference.html#//apple_ref/doc/uid/20000140-SW11