我有一个符合nscoding协议的对象。
对象包含一个将自身保存到内存中的方法,如下所示:
- (void)saveToFile {
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:self forKey:kDataKey];
[archiver finishEncoding];
[data writeToFile:[self dataFilePath] atomically:YES];
[archiver release];
[data release];
}
这个很好用。但我还想初始化这个对象的空版本,然后调用它自己的“load”方法,将文件中存在的任何数据加载到它的变量中。所以我创建了以下内容:
- (void)loadFromFile {
NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
self = [unarchiver decodeObjectForKey:kDataKey];
[unarchiver finishDecoding];
}
}
现在,第二个方法无法加载任何变量。这条线不可能吗?
self = [unarchiver decodeObjectForKey:kDataKey];
最后,我想使用这样的代码:
一个视图控制器接受用户输入的输入,创建一个对象并使用
[anObject saveToFile];
第二个viewcontroller创建一个空对象,然后通过调用以下命令将其值初始化为存储在文件中的值:
[emptyObject loadFromFile];
关于如何使这项工作的任何建议都将受到极大的赞赏。谢谢)
迈克尔