gpt4 book ai didi

iphone - 如何从 iOS 文件中存储的数据中解码多个对象

转载 作者:行者123 更新时间:2023-11-29 04:24:37 24 4
gpt4 key购买 nike

我有一张表格,其中包含名字和姓氏信息以及一些其他信息。我使用 person 类来存储这些信息。在提交时单击我使用在 person 类中实现的 NSCoding 将其存档在文件 person.txt 中。如果我在文件 person.txt 中添加多个人员,如何获取文件中存储的所有人员对象。解码人员类别只会给我最后添加的人员。

最佳答案

如果您希望序列化所有的 person 对象,那么您需要将 NSArray 或存储它们的任何其他集合类作为 NSKeyedArchiver 的根对象。例如:(假设 ARC)

#import <Foundation/Foundation.h>

@interface Person:NSObject <NSCoding>
@property (nonatomic, copy) NSString *lastName;
@property (nonatomic, copy) NSString *firstName;
// etc.
@end

@implementation Person

@synthesize lastName = _lastName;
@synthesize firstName = _firstName;

- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.lastName forKey:@"ln"];
[aCoder encodeObject:self.firstName forKey:@"fn"];
}

- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super init];
if( !self ) { return nil; }

_lastName = [aDecoder decodeObjectForKey:@"ln"];
_firstName = [aDecoder decodeObjectForKey:@"fn"];

return self;
}

@end

int main(int argc, char *argv[]) {
NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];

Person *me = [Person new];
me.lastName = @"Kitten";
me.firstName = @"Mittens";

Person *you = [Person new];
you.lastName = @"Youe";
you.firstName = @"JoJo";

NSArray *people = [NSArray arrayWithObjects:me,you,nil];
NSData *serializedData = [NSKeyedArchiver archivedDataWithRootObject:people];

// write your serializedData to file, etc.

[p release];
}

为什么你的存档上有 .txt 扩展名?它只是二进制数据,对吗?

关于iphone - 如何从 iOS 文件中存储的数据中解码多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com