NSString *home = NSHomeDirectory()
2、文档目录:documents[0];
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
3、缓存目录:caches[0]NSArray *caches = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, NO);
4、临时目录: tmpDirNSString *tmpDir = NSTemporaryDirectory();
plist的写入
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *doc = documents[0];
NSString *path = [doc stringByAppendingPathComponent:@"array.plist"];
[array writeToFile:path atomically:YES];
图片数据的写日:
NSData *imageData = UIImagePNGRepresentation(image);
// 2. 建立保存文件的路径
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [documents[0] stringByAppendingPathComponent:@"image.png"];
// 3. 将NSData写入文件
[imageData writeToFile:path atomically:YES];
注意:info是写入不了的!info不都是以下数据类型的// 1. 判断文件是否存在
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [documents[0] stringByAppendingPathComponent:@"image.png"];
// 注意:此处不要使用imageNamed方法,因为imageNamed方法是从bundle中加载图像的
UIImage *image = [UIImage imageWithContentsOfFile:path];
// 2. 如果存在加载图像并且显示在UIImageView中
if (image != nil) {
[imageView setImage:image];
}
// 归档(序列化/编码)_是在保存数据时使用的
- (void)encodeWithCoder:(NSCoder *)aCoder
// 恢复(反序列化)_是在恢复数据时使用的
- (id)initWithCoder:(NSCoder *)aDecoder
会首先调用被归档类对象的encodeWithCoder方法对该对象的属性编码,然后再写入文件进行归档
从文件加载数据后,会调用类的initWithCoder方法,实例化该类对象,并恢复属性
[super encodeWithCoder:aCoder];
确保继承的实例变量也能被编码,即也能被归档
self = [super initWithCoder:aDecoder];
确保继承的实例变量也能被解码,即也能被恢复
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//TODO:......
// 如果,对于某些需要保存在偏好设置中的数据,要求实时的响应,需要在保存系统偏好设置时,调用一个同步方法
[defaults synchronize];