我正在尝试将一些自定义类/数据存储到我的 iPhone/iPad 应用程序中的文件中。
我有一个类 RSHighscoreList
@interface RSHighscoreList : NSObject {
NSMutableArray *list;
}
其中包含列表中 RSHighscore 的对象
@interface RSHighscore : NSObject {
NSString *playerName;
NSInteger points;
}
当我尝试将所有内容存储到文件时
- (void)writeDataStore {
RSDataStore *tmpStore = [[RSDataStore alloc] init];
_tmpStore.highscorelist = self.highscorelist.list;
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:tmpStore forKey:kDataKey];
[archiver finishEncoding];
[data writeToFile:[self dataFilePath] atomically:YES];
[archiver release];
[data release];
}
@interface RSDataStore : NSObject <NSCoding, NSCopying> {
NSMutableArray *highscorelist;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:highscorelist forKey:@"Highscorelist"];
}
该应用程序将崩溃并显示错误消息
-[RSHighscore encodeWithCoder:]:无法识别的选择器发送到实例 0x573cc20 *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[RSHighscore encodeWithCoder:]:无法识别的选择器发送到实例 0x573cc20”
我想知道为什么错误会告诉 RSHighscore,即使它是“包装的”。有人有好主意吗?