日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据持久化------Archiving(归档,解档)

發布時間:2023/12/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据持久化------Archiving(归档,解档) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其中TRPerson為自定義的繼承自NSObject的類的子類 ?其中有兩個屬性,name 和 age

.h文件

#import

?

@interface TRPerson : NSObject<</span>NSCoding>

@property (nonatomic,strong)NSString *name;

@property (nonatomic,strong)NSNumber * age;

//初始化方法

- (id)initWithName:(NSString*)name withAge:(NSNumber *)age;

?

@end

?

?

.m文件

#import "TRPerson.h"

?

@implementation TRPerson

- (id)initWithName:(NSString *)name withAge:(NSNumber *)age{

? ? if (self=[super init]) {

? ? ? ? self.age=age;

? ? ? ? self.name=name;

? ? }

? ? return? self;

?? ?

}

#pragma mark - NSCoding

?

?//對屬性進行解碼(時機:執行encodeObject方法)

- (instancetype)initWithCoder:(NSCoder *)aDecoder{

?? self= [super init];

? ? if (self) {

? ? ? ? self.name= [aDecoder decodeObjectForKey:@"name"];

? ? ? ? self.age=[aDecoder decodeObjectForKey:@"age"];

? ? }

? ? return self;

}

?

?

//對屬性進行編碼的方法

- (void)encodeWithCoder:(NSCoder *)aCoder{

? ? [aCoder encodeObject:self.age forKey:@"age"];

? ? [aCoder encodeObject:self.name forKey:@"name"];

?? ?

}

- (NSString *)description{

? ? TRPerson *person=[[TRPerson alloc]initWithName:self.name withAge:self.age];

? ? return? [NSString stringWithFormat:@"name:%@ age:%@",person.name ,person.age];

}

?

@end

?

ViewController中的viewDidLoad方法中實現數據的歸檔和解擋

?- (void)viewDidLoad {

? ? [super viewDidLoad];

? ? //準備工作

?? ? //將自定義的TRPerson對象進行歸檔(寫)

?? ?

? ? TRPerson *person=[[TRPerson alloc]initWithName:@"張飛" withAge:@20];

? ? //Documents/archiving

? ? NSString *doumentsPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES).firstObject;

? ? NSString *archiverPath = [doumentsPath stringByAppendingPathComponent:@"archving"];

? ? //1.可變數據類型

? ? NSMutableData *data=[NSMutableData data];

? ? //2.歸檔對象

? ? NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:data];

? ? //3.編碼

?? ?

? ? [archiver encodeObject:person forKey:@"person"];

? ? //4.編碼完成

? ? [archiver finishEncoding];

? ? //5.寫入文件

?? ?

? ? [data writeToFile:archiverPath atomically:YES];

? ? //將自定義的TRPerson對象進行解擋(讀)

? ? //1.讀取數據

? ? NSData *readingData=[NSData dataWithContentsOfFile:archiverPath];

? ? //2.解碼對象

? ? NSKeyedUnarchiver *unArchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:readingData];

? ? //3.解碼

?TRPerson *personRead=[unArchiver decodeObjectForKey:@"person"];

? ? //4.完成解碼

? ? [unArchiver finishDecoding];

? ? //驗證

? ? NSLog(@"%@",personRead );

}

轉載于:https://www.cnblogs.com/zhao-jie-li/p/5128460.html

總結

以上是生活随笔為你收集整理的数据持久化------Archiving(归档,解档)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。