模拟器应用沙盒的根路径在: (apple是用户名, 6.0是模拟器版本)
/Users/apple/Library/Application Support/iPhoneSimulator/6.0/Applications
NSString*home = NSHomeDirectory();
NSString*documents = [home stringByAppendingPathComponent:@"Documents"];
// 不建议采用,因为新版本的操作系统可能会修改目录名
// NSUserDomainMask 代表从用户文件夹下找
// YES 代表展开路径中的波浪字符“~”
NSArray*array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, NO);
//在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素
NSString*documents = [array lastObject];
<span style="font-size:14px;">// 将数据封装成字典
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"母鸡" forKey:@"name"];
[dict setObject:@"15013141314" forKey:@"phone"];
[dict setObject:@"27" forKey:@"age"];
// 将字典持久化到Documents/stu.plist文件中</span>
<div style="font-family: 宋体;"><span style="font-size:14px;">NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, NO) lastObject];</span></div><div style="font-family: 宋体;"><span style="font-size:14px;">NSString *fileName = @"stu.plist";</span></div><div style="font-family: 宋体;"><span style="font-size:14px;">NSString *path = [documentPath <span class="s1">stringByAppendingString</span><span class="s2">:fileName];</span></span></div><span style="font-size:14px;">[dict writeToFile:path atomically:YES];</span>
// 读取Documents/stu.plist的内容,实例化NSDictionary
NSDictionary*dict = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"name:%@", [dictobjectForKey:@"name"]);
NSLog(@"phone:%@", [dictobjectForKey:@"phone"]);
NSLog(@"age:%@",[dict objectForKey:@"age"]);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"itcast"forKey:@"username"];
[defaults setFloat:18.0fforKey:@"text_size"];
[defaults setBool:YESforKey:@"auto_login"];
NSUserDefaults*defaults = [NSUserDefaultsstandardUserDefaults];
NSString*username = [defaults stringForKey:@"username"];
floattextSize = [defaults floatForKey:@"text_size"];
BOOLautoLogin = [defaults boolForKey:@"auto_login"];
[defaults synchornize];
三、NSKeyedArchiver归档- encodeWithCoder:
每次归档对象时,都会调用这个方法。一般在这个方法里面指定如何归档对象中的每个实例变量,可以使用encodeObject:forKey:方法归档实例变量。
- initWithCoder:
@implementation Person
- 归档(编码)
Person *person = [[[Person alloc] init] autorelease];
person.name = @"MJ";
person.height = 1.83f;
[NSKeyedArchiver archiveRootObject:persontoFile:path];
- 恢复(解码)
- 如果父类也遵守了NSCoding协议,请注意:
- 应该在encodeWithCoder:方法中加上一句
[super encodeWithCode:encode];
确保继承的实例变量也能被编码,即也能被归档
- 应该在initWithCoder:方法中加上一句
self = [super initWithCoder:decoder];