iOS資料持久化---對象歸檔

來源:互聯網
上載者:User

標籤:

歸檔:是對對象及其屬性還有同其他對象間的關係進行編碼,形成一個文檔,該文檔既可以儲存於檔案系統,也可以在進程或網路間傳送。

歸檔過程把對象圖儲存為一種與架構無關的位元組流,保持對象的標識以及對象間的關係。

能夠歸檔的對象必須遵守NSCoding協議,實現以下方法:

- (void)encodeWithCoder:(NSCoder *)aCoder;- (id)initWithCoder:(NSCoder *)aDecoder;

使用NSCoder對象進行編碼與解碼操作。NSCoder本身是抽象類別,實際運行中使用NSKeyedArchiver和NSKeyedUnarchiver這兩個具體類,也就是使用基於鍵的歸檔技術。

Archiving:

+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path;

Unarchiving:

+ (id)unarchiveObjectWithFile:(NSString *)path;

樣本:

////  NimoPerson.h//  TestDemo////  Created by fu zheng on 15/8/13.//  Copyright (c) 2015年 FuZheng. All rights reserved.//#import <Foundation/Foundation.h>@interface NimoPerson : NSObject <NSCoding>@property (nonatomic, copy) NSString *name;@property (nonatomic, copy) NSString *gender;@property (nonatomic, assign) NSUInteger age;@property (nonatomic, retain) NSSet *friends;@property (nonatomic, getter = isMarried) BOOL married;@end
////  NimoPerson.m//  TestDemo////  Created by fu zheng on 15/8/13.//  Copyright (c) 2015年 FuZheng. All rights reserved.//#import "NimoPerson.h"@implementation NimoPerson- (void)encodeWithCoder:(NSCoder *)aCoder{    [aCoder encodeObject:self.name forKey:@"name"];    [aCoder encodeObject:self.gender forKey:@"gender"];    [aCoder encodeInteger:self.age forKey:@"age"];    [aCoder encodeObject:self.friends forKey:@"friends"];    [aCoder encodeBool:[self isMarried] forKey:@"married"];    }- (id)initWithCoder:(NSCoder *)aDecoder{    if (self = [super init]) {        _name = [[aDecoder decodeObjectForKey:@"name"] copy];        _gender = [[aDecoder decodeObjectForKey:@"gender"] copy];        _age = [aDecoder decodeIntegerForKey:@"age"];        _friends = [aDecoder decodeObjectForKey:@"friends"];        _married = [aDecoder decodeBoolForKey:@"married"];    }        return self;}- (id)init{    NSSet *friends = [[NSSet alloc] initWithArray:@[@"Tom", @"Jessica", @"Lily"]];    return [self initWithName:@"Tony" gender:@"male" age:28 friends:friends married:NO];}- (id)initWithName:(NSString *)name            gender:(NSString *)gender               age:(NSUInteger)age           friends:(NSSet *)friends           married:(BOOL)married{    if (self = [super init]) {        _name = [name copy];        _gender = [name copy];        _age = age;        _friends = friends;        _married = married;    }        return self;}- (NSString *)description{    NSDictionary *desDic = @{@"name":_name, @"gender":_gender, @"age":[NSNumber numberWithInteger:_age], @"married":[NSNumber numberWithBool:_married]};    return [NSString stringWithFormat:@"%@", desDic];}@end


iOS資料持久化---對象歸檔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.