OC版本:
- (void)WriteData{
NSString *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject;
NSString *file =[path stringByAppendingPathComponent:@"User_C"];
if ( @available(iOS 11.0, *)) {
NSError *error = nil;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self requiringSecureCoding:YES error:&error];
if (error) {
NSLog(@"模型转Data失败:%@",error);
}else{
BOOL success = [data writeToFile:file atomically:YES];
if (success) {
NSLog(@"写入成功");
}else{
NSLog(@"写入失败");
}
}
} else {
BOOL savesuccess = [NSKeyedArchiver archiveRootObject:self toFile:file];
if (savesuccess) {
NSLog(@"存放成功");
}else{
NSLog(@"存放失败");
}
}
}
\
\
- (instancetype)ReadData{
NSString *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject;
NSString *file =[path stringByAppendingPathComponent:@"User_C"];
if ( @available(iOS 11.0, *)) {
NSError *error = nil;
NSData *data = [[NSData alloc]initWithContentsOfFile:file];
User *user = [NSKeyedUnarchiver unarchivedObjectOfClass:[User class] fromData:data error:&error];
if (error||!user) {
user = [[User alloc]init];
[user initData];
[user WriteData];
}else{
NSLog(@"数据读取成功");
}
return user;
} else {
User *user = [NSKeyedUnarchiver unarchiveObjectWithFile:file];
if (!user) {
user = [[User alloc]init];
[user initData];
}
return user;
}
}
Swift版本:
func WriteData() -> Void {
let file : String = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).first ?? ""
let filePath = (file as NSString).appendingPathComponent("User_C")
print("用户信息路径:(filePath)")
if #available(iOS 11.0, *) {
do {
let data = try NSKeyedArchiver.archivedData(withRootObject: self, requiringSecureCoding: true)
do {
_ = try data.write(to: URL.init(fileURLWithPath: filePath))
print("写入成功")
} catch {
print("data写入本地失败: (error)")
}
} catch {
print("模型转Data失败:(error)")
}
} else {
let success:Bool = NSKeyedArchiver.archiveRootObject(self, toFile:filePath)
if success {
print("写入成功")
}else{
print("写入失败")
}
}
}
class func ReadData() -> User {
let file : String = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).first ?? ""
let filepath = (file as NSString).appendingPathComponent("User_C")
print("用户信息路径:(filepath)")
let user: User
do {
if #available(iOS 11.0, *) {
let data: Data = try NSData.init(contentsOfFile: filepath) as Data
user = try NSKeyedUnarchiver.unarchivedObject(ofClass: User.self, from: data) ?? User.init()
} else {
user = NSKeyedUnarchiver.unarchiveObject(withFile: filepath) as? User ?? User.init()
}
print("读取成功")
} catch {
print("Data转模型失败:(error)")
user = User.init()
}
return user
}