繁体   English   中英

NSKeyedArchiver可与模拟器一起使用,但不适用于实际设备

[英]NSKeyedArchiver works with simulator but not actual device

因此,我实现了这两个功能以将数据保存在我的应用程序中:

- (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的协议。

您正在错误地构建路径。

这个:

return [documentDirectory stringByAppendingString:@"items.archive"];

需要是:

return [documentDirectory stringByAppendingPathComponent:@"items.archive"];

您的原始代码所产生的路径类似于:

app / Documentsitems.archive的一些路径

请注意,文件名之前没有斜杠。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM