首先创建一个基本对象模型
添加一个快捷文件
import Foundation
class UserModel: NSObject,NSCoding{
var name:NSString!
var password:NSString!
func encode(with aCoder: NSCoder) {
aCoder.encode(self.name, forKey: "name")
aCoder.encode(self.password, forKey: "password")
}
required init?(coder aDecoder: NSCoder) {
super.init()
self.name = aDecoder.decodeObject(forKey:"name") as! NSString
self.password = aDecoder.decodeObject(forKey:"password") as! NSString
}
override init() {
}
}
然后在Viewcontroller.swift文件中进行归档和恢复归档的操作
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let user1 = UserModel()
user1.name = "Jerry"
user1.password = "123"
let data = NSMutableData()
let archive = NSKeyedArchiver(forWritingWith: data)
archive.encode(user1, forKey: "user1Key")
archive.finishEncoding()
let filePath = NSHomeDirectory() + "/Documents/contacts.data"
data.write(toFile: filePath, atomically: true)
let fileData = NSMutableData(contentsOfFile: filePath)
let unarchiver = NSKeyedUnarchiver(forReadingWith: fileData! as Data)
let saveUser = unarchiver.decodeObject(forKey: "user1Key") as! UserModel
unarchiver.finishDecoding()
print(saveUser.name)
print(saveUser.password)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
补充oc的方法:
-(void)read:(NSString *)path{
NSString *filePath = path;
NSString *key = [NSString stringWithFormat:@"last_brt_%d",_grpConf->shortId_];
NSMutableData *data = [[NSMutableData alloc] initWithContentsOfFile:filePath];
NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSMutableDictionary *dic = [unArchiver decodeObjectForKey:key];
[unArchiver finishDecoding];
NSLog(@"readSetting key = %@ brt = %@",key,[dic valueForKey:@"brt"]);
NSString *brtString = [dic valueForKey:@"brt"];
if (brtString) {
float brtFloat = [brtString floatValue];
_colorSelector.slider.value = brtFloat;
CGFloat sliderWidth = kScreen_Width * 0.8 > 300 ? 300 : kScreen_Width * 0.8;
CGFloat x = _colorSelector.slider.value * (sliderWidth - 20);
CGFloat v = _colorSelector.slider.value > 0.05 ? _colorSelector.slider.value : 0.05;
_colorSelector.brLabel.text = [NSString stringWithFormat:@"%.f%%", v * 100];
_colorSelector.brLabel.frame = CGRectMake(x, 0, 36, 16);
}
}
-(void)save: (CGFloat)brt Path:(NSString *)path {
if (_grpConf) {
NSString *key = [NSString stringWithFormat:@"last_brt_%d",_grpConf->shortId_];
NSMutableDictionary * dic = [[NSMutableDictionary alloc] init];
NSString *str = [NSString stringWithFormat:@"%f", brt];
[dic setValue:str forKey:@"brt"];
NSLog(@"saveSetting key = %@ brt = %@",key,[dic valueForKey:@"brt"]);
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:dic forKey:key];
[archiver finishEncoding];
NSString *filePath = path;
[data writeToFile:filePath atomically:YES];
}
}