中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS 對象的歸檔

發布時間:2020-07-21 12:38:06 來源:網絡 閱讀:286 作者:大頭狼小鬼 欄目:移動開發

對象歸檔的定義:

對象歸檔就是將對象歸檔以文件的形式保存到磁盤中,使用的時候以該文件保存的路徑讀取文件中的內容

使用NSKeyedArichiver進行歸檔、NSKeyedUnarchiver進行接檔,這種方式會在寫入、讀出數據之前對數據進行序列化、反序列化操作。

單對象歸檔,多個對象歸檔,自定義對象歸檔

常用的歸檔一般用在工具類中,對不可變的數據進行歸檔,可變的數據不進行歸檔,用起來更加方便

 //1.一個對象歸檔

    NSString *homeDictionary = NSHomeDirectory();//獲取根目錄

    NSString *homePath  = [homeDictionary stringByAppendingPathComponent:@"archiver.data"];//添加儲存的文件名

    //歸檔 toFile:路徑 archiveRootObject:id對象

    [NSKeyedArchiver archiveRootObject:@"對象" toFile:homePath];

    //接檔

    id object = [NSKeyedUnarchiver unarchiveObjectWithFile:homePath];

    NSLog(@"%@",object);

    

    //2.將多個對象歸檔

    NSMutableData *data = [NSMutableData data];

    //歸檔

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

    int aInt = 100;

    NSString *aString = @"I is an Apple";

    NSDictionary *aDict = @{@"a":@"b",@"c":@"d"};

    [archiver encodeObject:@(aInt) forKey:@"aInt"];

    [archiver encodeObject:aString forKey:@"aString"];

    [archiver encodeObject:aDict forKey:@"aDict"];

    [archiver finishEncoding];

    NSString *dataHomePath = [NSHomeDirectory() stringByAppendingPathComponent:@"data.archiver"];

    [data writeToFile:dataHomePath atomically:YES];

    //接檔

    NSMutableData *muData = [[NSMutableData alloc]initWithContentsOfFile:dataHomePath];

    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:muData];

    NSInteger  anInt = [[unarchiver decodeObjectForKey:@"aInt"] integerValue];

    NSString *anString = [unarchiver decodeObjectForKey:@"aString"];

    NSDictionary *anDict = [unarchiver decodeObjectForKey:@"aDict"];

    [unarchiver finishDecoding];

    NSLog(@"anInt=%@,anString=%@,anDict=%@",@(anInt),anString,anDict);

    

    //3.自定義對象歸檔實現copy協議

    #import <Foundation/Foundation.h>

    @interface ArchiveCopy : NSObject

    @property (copy,nonatomic) NSString *name;

    @property (copy,nonatomic) NSString *anAge;

    end

   


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

    [aCoder encodeObject:@"name"];

    [aCoder encodeObject:@"anAge"];

}



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

    if (self = [super init]) {

        _name = [aDecoder decodeObjectForKey:@"name"];

        _anAge = [aDecoder decodeIntegerForKey:@"anAge"];

    }

    return self;

}


#pragma mark - NSCoping

- (id)copyWithZone:(NSZone *)zone {

    ArchiveCopy *copy = [[[self class] allocWithZone:zone] init];

    copy.name = [self.name copyWithZone:zone];

    copy.anAge = [self.address copyWithZone:zone];

    return copy;

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

宜黄县| 揭东县| 玉门市| 兴城市| 沛县| 三原县| 新郑市| 视频| 巴南区| 瑞安市| 黄石市| 甘孜| 海盐县| 奎屯市| 射阳县| 洛宁县| 兴仁县| 白玉县| 织金县| 炉霍县| 贵州省| 衡东县| 电白县| 潍坊市| 嵊泗县| 东宁县| 兴海县| 若尔盖县| 永春县| 古田县| 满洲里市| 西乌珠穆沁旗| 兰州市| 当雄县| 濉溪县| 中宁县| 桂东县| 武安市| 济阳县| 巴青县| 昭苏县|