main.m文件标签:nil,NSLog,OC,NSDictionary,k2,详解,dict,key From: https://blog.51cto.com/u_15907570/5925315
#import <Foundation/Foundation.h>
#import "Student.h"
字典的初始化
void
// NSDictionary是不可变的
NSDictionary *dict = [NSDictionarydictionaryWithObject:@"v"forKey:@"k"];
//最常用的初始化方式
dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
NSArray *objects = [NSArrayarrayWithObjects:@"v1",@"v2", @"v3",nil];
NSArray *keys = [NSArrayarrayWithObjects:@"k1",@"k2", @"k3",nil];
NSDictionarydictionaryWithObjects:objects forKeys:keys];
NSLog(@"%@", dict);
}
字典的基本用法
void
NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
// count是计算有多少个键值对(key-value)
NSLog(@"count=%zi", dict.count);
//由于NSDictionary是不可变的,所以只能取值,而不能修改值
id obj = [dict objectForKey:@"k2"];
NSLog(@"obj=%@", obj);
//将字典写入文件中
NSString *path =@"/Users/apple/Desktop/dictionary.xml";
[dict writeToFile:pathatomically:YES];
//从文件中读取内容
dict = [NSDictionarydictionaryWithContentsOfFile:path];
NSLog(@"dict=%@", dict);
}
字典的用法
void
NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
// 返回所有的key
NSArray *keys = [dict allKeys];
//NSLog(@"keys=%@", keys);
NSArray *objects = [dict allValues];
//NSLog(@"objects=%@", objects);
// 根据多个key取出对应的多个value
// 当key找不到对应的value时,用marker参数值代替
objects = [dict objectsForKeys:[NSArrayarrayWithObjects:@"k1",@"k2", @"k4", nil]notFoundMarker:@"not-found"];
NSLog(@"objects=%@", objects);
}
遍历字典
void
NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
// 遍历字典的所有key
for (id keyin
id value = [dict objectForKey:key];
NSLog(@"%@=%@", key, value);
}
}
遍历字典2
void
NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
// key迭代器
NSEnumerator *enumer = [dict keyEnumerator];
id key = nil;
while ( key = [enumer nextObject]) {
id value = [dict objectForKey:key];
NSLog(@"%@=%@", key, value);
}
// 对象迭代器
// [dict objectEnumerator];
}
遍历字典3
void
NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
[dict enumerateKeysAndObjectsUsingBlock:
id key,id obj, BOOL
NSLog(@"%@=%@", key, obj);
}];
}
#pragma mark
void
Student *stu1 = [StudentstudentWithName:@"stu1"];
Student *stu2 = [StudentstudentWithName:@"stu2"];
Student *stu3 = [StudentstudentWithName:@"stu3"];
//一个对象称为字典的key或者value时,会做一次retain操作,也就是计数器会+1
NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"k1",
@"k2",
@"k3", nil];
//当字典被销毁时,里面的所有key和value都会做一次release操作,也就是计数器会-1
}
int main(int argc,const char
{
@autoreleasepool {
dictMemory();
}
return 0;
}
Student.h文件
#import <Foundation/Foundation.h>
@interface Student :NSObject
(nonatomic,retain) NSString *name;
+ (id)studentWithName:(NSString
@end
Student.m文件
#import "Student.h"
Student
+ (id)studentWithName:(NSString
Student *stu = [[Studentalloc] init];
name
return [stu autorelease];
}
- (void)dealloc {
NSLog(@"%@被销毁了", _name);
// 释放name
_namerelease];
superdealloc];
}
@end