標籤:
兩個按鈕
//// HMPerson.h// 08-自訂對象歸檔//// Created by yz on 14-8-29.// Copyright (c) 2014年 iThinker. All rights reserved.//#import <Foundation/Foundation.h>@interface HMPerson : NSObject<NSCoding>@property (nonatomic, assign) int age;@end//// HMPerson.m// 08-自訂對象歸檔//// Created by yz on 14-8-29.// Copyright (c) 2014年 iThinker. All rights reserved.//#import "HMPerson.h"@implementation HMPerson// 在對象歸檔的時候調用// 哪些屬性需要歸檔// 這些屬性怎麼歸檔- (void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeInt:_age forKey:@"age"];}// 在對象解檔的時候調用// 哪些屬性需要解檔// 這些屬性怎麼解檔- (id)initWithCoder:(NSCoder *)aDecoder{ // 當父類實現了NSCoding,就能調用 [super initWithCoder] if (self = [super init]) { _age = [aDecoder decodeIntForKey:@"age"]; } return self;}@end
//// HMView.h// 08-自訂對象歸檔//// Created by yz on 14-8-29.// Copyright (c) 2014年 iThinker. All rights reserved.//#import <UIKit/UIKit.h>@interface HMView : UIView@end//// HMView.m// 08-自訂對象歸檔//// Created by yz on 14-8-29.// Copyright (c) 2014年 iThinker. All rights reserved.//#import "HMView.h"@implementation HMView- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // Initialization code } return self;}// 解析XIB會調用- (id)initWithCoder:(NSCoder *)aDecoder{ if (self = [super initWithCoder:aDecoder]) { } return self;}/*// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{ // Drawing code}*/@end
//// HMViewController.h// 08-自訂對象歸檔//// Created by yz on 14-8-29.// Copyright (c) 2014年 iThinker. All rights reserved.//#import <UIKit/UIKit.h>@interface HMViewController : UIViewController@end//// HMViewController.m// 08-自訂對象歸檔//// Created by yz on 14-8-29.// Copyright (c) 2014年 iThinker. All rights reserved.//#import "HMViewController.h"#import "HMPerson.h"@interface HMViewController ()@end@implementation HMViewController- (IBAction)save:(id)sender { HMPerson *person = [HMPerson new]; person.age = 18; NSString *docPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; // 拼接檔案路徑 NSString *filePath = [docPath stringByAppendingPathComponent:@"person.data"]; [NSKeyedArchiver archiveRootObject:person toFile:filePath]; }- (IBAction)read:(id)sender { NSString *docPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; // 拼接檔案路徑 NSString *filePath = [docPath stringByAppendingPathComponent:@"person.data"]; HMPerson *p = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; NSLog(@"%d",p.age);}- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
iOS-自訂歸檔 儲存資料