《精通iOS开发·第六版》数据持久化基础知识之对象归档持久化
来源:互联网 发布:房产网站源码 php 编辑:程序博客网 时间:2024/05/21 12:45
《精通iOS开发·第六版》数据持久化基础知识之对象归档持久化
1、BIDViewController.h文件
#import "BIDViewController.h"#import "BIDFourLines.h"static NSString *const kRootKey = @"kRootKey";@interface BIDViewController ()@property(strong,nonatomic)IBOutletCollection(UITextField) NSArray *lineFields;@end@implementation BIDViewController- (void)viewDidLoad { [super viewDidLoad]; //视图加载完成之后(通常是从nib文件加载),做一些额外的设置 NSString *filePath = [self dataFilePath]; if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { NSData *data = [[NSMutableData alloc] initWithContentsOfFile:filePath]; NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; BIDFourLines *fourLines = [unarchiver decodeObjectForKey:kRootKey]; [unarchiver finishDecoding]; for (int i=0; i<4; i++) { UITextField *theField = self.lineFields[i]; theField.text = fourLines.lines[i]; } } UIApplication *app = [UIApplication sharedApplication]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:app]; // Do any additional setup after loading the view from its nib.}-(NSString *)dataFilePath{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; return [documentsDirectory stringByAppendingPathComponent:@"data.archive"];}-(void)applicationWillResignActive:(NSNotification *)notification{ NSString *filePath = [self dataFilePath]; BIDFourLines *fourLines = [[BIDFourLines alloc] init]; fourLines.lines = [self.lineFields valueForKey:@"text"]; NSMutableData *data = [[NSMutableData alloc] init]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:fourLines forKey:kRootKey]; [archiver finishEncoding]; [data writeToFile:filePath atomically:YES];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
2、BIDViewController.xib
3、BIDFourLines.h文件
#import <Foundation/Foundation.h>@interface BIDFourLines : NSObject<NSCoding,NSCopying>@property(copy,nonatomic)NSArray *lines;@end
4、BIDFourLines.m文件
#import "BIDFourLines.h"static NSString *const kLinesKey = @"kLinesKey";@implementation BIDFourLines#pragma mark -Coding-(id)initWithCoder:(NSCoder *)aDecoder{ self = [super init]; if (self) { self.lines = [aDecoder decodeObjectForKey:kLinesKey]; } return self;}-(void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.lines forKey:kLinesKey];}#pragma mark -Copying-(id)copyWithZone:(NSZone *)zone{ BIDFourLines *copy = [[[self class] allocWithZone:zone] init]; NSMutableArray *linesCopy = [NSMutableArray array]; for (id line in self.lines) { [linesCopy addObject:[line copyWithZone:zone]]; } copy.lines = linesCopy; return copy;}@end
注意:如下图:
lineFields与XIB中的四个文本输入框链接
0 0
- 《精通iOS开发·第六版》数据持久化基础知识之对象归档持久化
- 《精通iOS开发·第六版》数据持久化基础知识之属性列表持久化
- 《精通iOS开发·第六版》数据持久化基础知识之CoreData持久化
- 《精通iOS开发·第六版》数据持久化基础知识之SOLite3持久化
- IOS数据持久化之对象归档
- iOS开发 数据持久化-归档
- iOS 对象持久化之- 归档 archiving
- iOS开发之数据持久化 --NSKeydeArchiver归档
- iOS开发之数据持久化-归档
- iOS数据持久化之归档
- IOS数据持久化之归档NSKeyedArchiver
- iOS数据持久化之归档
- iOS数据持久化之NSKeyedArchiver(归档)
- iOS数据持久化之归档NSKeyedArchiver
- ios 数据持久化之 归档
- 数据持久化-对象归档
- iOS 归档持久化数据
- iOS数据持久化 归档
- Gym 100917 F - Find the Length
- 蓝桥杯系统题集部分(带java版参考答案)
- Objective-C中@property和@synthesize的用法
- vim快捷键
- 开发驱动时用到的内核打印函数KdPrint 的使用方法
- 《精通iOS开发·第六版》数据持久化基础知识之对象归档持久化
- 一种动态为apk写入信息的方案
- CodeForces 635C XOR Equation(数论)
- C++初始化顺序
- springMVC json自动将date类型转换为long
- Android TextView使用HTML处理字体样式、显示图片等
- Properties android 操作本地文件
- SLF4J: Class path contains multiple SLF4J bindings.
- 【Lua】不进位保留小数点X位数