我有一个 NSDate 对象
NSDate* time = [NSDate date];
我正在尝试使用 NSKeyedArchiver 使用以下方法保存它
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *saveFile = [[paths objectAtIndex:0] stringByAppendingPathComponent: @"GameData.dat"];
NSMutableData *gameData = [NSMutableData data];
NSKeyedArchiver *encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData: gameData];
[encoder encodeObject: time forKey: @"time"];
[encoder finishEncoding];
[gameData writeToFile:saveFile atomically:YES];
我使用以下内容加载它
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *file = [[paths objectAtIndex:0] stringByAppendingPathComponent: @"GameData.dat"];
Boolean saveFileExists = [[NSFileManager defaultManager] fileExistsAtPath:file];
NSMutableData *gameData = [NSData dataWithContentsOfFile:file];
NSKeyedUnarchiver *decoder [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];
time = [decoder decodeObjectForKey: @"time"];
此方法适用于所有非对象数据类型,但它始终为对象返回 nil。我阅读了 NSKeyedArchiver 的苹果文档,看起来我应该做对了,但与往常一样,我可能遗漏了一些明显的东西。任何帮助,将不胜感激。