所以我实现了这两个函数来保存我的应用程序中的数据:
- (NSString*)itemArchivePath
{
NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentDirectory = [documentDirectories firstObject];
return [documentDirectory stringByAppendingString:@"items.archive"];
}
-(BOOL)saveChanges
{
NSString* path = [self itemArchivePath];
return [NSKeyedArchiver archiveRootObject:self.highScores toFile:path];
}
它可以完美地保存iOS模拟器上的所有内容,但是当我在实际的iPhone上运行它时,它并没有保存任何东西。大多数应用程序都是快速编写的,但我不认为这就是问题所在。我也确实为NSCoding
实施了协议。
答案 0 :(得分:2)
您正在错误地构建路径。
此:
return [documentDirectory stringByAppendingString:@"items.archive"];
需要:
return [documentDirectory stringByAppendingPathComponent:@"items.archive"];
您的原始代码会产生如下路径:
app / Documentsitems.archive的一些路径
请注意文件名前没有斜杠。