10

Objective-C 归档对象

 3 years ago
source link: http://blog.danthought.com/programming/2020/12/06/objective-c-archive-object/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Objective-C 归档对象

本文并不是一篇完整的教程,更像一篇快速笔记,讲解 Objective-C 中的归档对象。

Objective C

归档对象需要实现 NSCoding 协议:

#import <Foundation/Foundation.h>

@interface HVUser : NSObject <NSCoding>

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *mobile;
@property (nonatomic) int gender;

@end
#import "HVUser.h"

@implementation HVUser

- (void)encodeWithCoder:(NSCoder *)coder {
  [coder encodeObject:self.name forKey:@"name"];
  [coder encodeObject:self.mobile forKey:@"mobile"];
  [coder encodeInt:self.gender forKey:@"gender"];
}

- (id)initWithCoder:(NSCoder *)aDecoder {
  self = [super init];
  if (self) {
    self.name = [aDecoder decodeObjectForKey:@"name"];
    self.mobile = [aDecoder decodeObjectForKey:@"mobile"];
    self.gender = [aDecoder decodeIntForKey:@"gender"];
  }
  return self;
}

@end
HVUser *user = [HVUser new];
user.name = @"Jack";
user.mobile = @"18722223333";
user.gender = 1;

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:user] forKey:@"user"];
[userDefaults synchronize];

NSData *data = [userDefaults valueForKey:@"user"];
HVUser *savedUser = (HVUser *)[NSKeyedUnarchiver unarchiveObjectWithData:data];

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK