iOS开发持久化方案
1 - (void)writeToFile { 2 //plist文件只接受NSString、NSData、NSDate、NSNumber、NSArray、NSDictionary 3 //自定义对象无法存入plist文件 4 NSString *homeDir = NSHomeDirectory(); 5 NSString *documentsPath = [homeDir stringByAppendingPathComponent:@"Documents"]; 6 NSString *filePath = [documentsPath stringByAppendingPathComponent:@"first.plist"]; 7 NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObject:@"20200622" forKey:@"date"]; 8 NSArray *array = [NSArray arrayWithObjects:@"autoreleasepool",@"runtime",@"kvo",@"calayer", nil]; 9 [dic setObject:array forKey:@"oc_knowlangue"]; 10 [dic writeToFile:filePath atomically:YES]; 11 }
1 - (void)readPlistFile { 2 NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 3 NSString *filePath = [documentPath stringByAppendingPathComponent:@"first.plist"]; 4 NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:filePath]; 5 NSLog(@"%@",dic); 6 }
1、plist文件的写入与读取
2、用户偏好设置的写入与读取
1 - (void)writeToUserDefaults { 2 //写入到用户偏好设置 3 // 1.不需要关心文件夹和文件的名字 4 // 2.快速做键值对 5 // 3.用法和字典基本一样 6 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 7 [userDefaults setObject:@"20200622" forKey:@"date"]; 8 [userDefaults synchronize]; 9 }
1 - (void)readUserDefaults { 2 //NSUserDefaults是单例 3 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 4 NSString *date = [userDefaults objectForKey:@"date"]; 5 NSLog(@"%@",date); 6 }
3、归档与解档
1 - (void)archiveObject { 2 //归档 可将自定义对象进行持久化 3 NSString *tmpPath = NSTemporaryDirectory(); 4 NSString *filePath = [tmpPath stringByAppendingPathComponent:@"liu.data"]; 5 Dog *dog = [[Dog alloc] init]; 6 dog.age = 18; 7 dog.name1 = @"dog"; 8 dog.name2 = @"simon"; 9 [NSKeyedArchiver archiveRootObject:dog toFile:filePath]; 10 }
1 - (void)unarchiveObject { 2 //解档 3 NSString *tempPath = NSTemporaryDirectory(); 4 NSString *filePath1 = [tempPath stringByAppendingPathComponent:@"liu.data"]; 5 Dog *d1 = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath1]; 6 NSLog(@"%@",d1); 7 }
Dog类中需遵守NSCoding协议 实现- (instancetype)initWithCoder:(NSCoder *)coder 和- (void)encodeWithCoder:(NSCoder *)coder方法
1 #import <Foundation/Foundation.h> 2 3 NS_ASSUME_NONNULL_BEGIN 4 5 @interface Dog : NSObject<NSCoding> 6 @property (nonatomic, assign) int age; 7 /*! name1 */ 8 @property (nonatomic, copy) NSString *name1; 9 /*! name2 */ 10 @property (nonatomic, copy) NSString *name2; 11 @end 12 13 NS_ASSUME_NONNULL_END
1 #import "Dog.h" 2 3 @implementation Dog 4 // !!!: 警告 5 // ???: 疑问 6 // TODO: 待编写 7 // MARK: ~~~~~~~~ 8 // !!!: 警告 9 // ???: 疑问 10 // TODO: 待编写 11 // MARK: ~~~~~~~~ 12 // FIXME: 待修正 13 - (instancetype)init { 14 self = [super init]; 15 if (self) { 16 self.name1 = @"name1"; 17 self.name2 = @"name2"; 18 } 19 return self; 20 } 21 22 - (instancetype)initWithCoder:(NSCoder *)coder { 23 self = [super init]; 24 if (self) { 25 _age = [coder decodeIntForKey:@"age"]; 26 _name1 = [coder decodeObjectForKey:@"name1"]; 27 _name2 = [coder decodeObjectForKey:@"name2"]; 28 } 29 return self; 30 } 31 32 - (void)encodeWithCoder:(NSCoder *)coder { 33 [coder encodeInt:_age forKey:@"age"]; 34 [coder encodeObject:_name1 forKey:@"name1"]; 35 [coder encodeObject:_name2 forKey:@"name2"]; 36 } 37 38 - (NSString *)description { 39 return [NSString stringWithFormat:@"age=%d name1=%@ name2=%@",_age,_name1,_name2]; 40 } 41 42 @end
1、xml属性列表(plist)归档
2、Preference偏好设置
3、NSKeyedArchiver归档(NSCoding)
4、SQLite3
5、Core Data
沙盒目录
1、Documents 保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。
2、tmp :保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。
3、Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
4、Library/Preference:保存应用的所有偏好设置,iOS的setting应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录。

浙公网安备 33010602011771号