NSKeyedArchiver 适用于模拟器,但不适用于实际设备
Posted
技术标签:
【中文标题】NSKeyedArchiver 适用于模拟器,但不适用于实际设备【英文标题】:NSKeyedArchiver works with simulator but not actual device 【发布时间】:2014-07-20 02:43:15 【问题描述】:所以我实现了这两个函数来在我的应用中保存数据:
- (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 上运行它时,它并没有保存任何内容。大多数应用程序都是用 swift 编写的,但我认为这不是问题所在。而且我也实现了NSCoding
的协议。
【问题讨论】:
【参考方案1】:你正在错误地构建你的路径。
这个:
return [documentDirectory stringByAppendingString:@"items.archive"];
需要:
return [documentDirectory stringByAppendingPathComponent:@"items.archive"];
您的原始代码会生成如下路径:
app/Documentsitems.archive 的一些路径
注意文件名前没有斜杠。
【讨论】:
以上是关于NSKeyedArchiver 适用于模拟器,但不适用于实际设备的主要内容,如果未能解决你的问题,请参考以下文章
我应该在 MPMoviePlayer 示例代码(适用于 iphone)中做出哪些区别才能使其在 Ipad 中工作?
NSKeyedArchiver 在模拟器中工作,但不在设备中,iOS SDK
部分视图部分适用于 JQuery,但不完全适用于 C# ASP.Net MVC 5