Ios NSKeyedArchiver可与模拟器一起工作,但不能与实际设备一起工作
因此,我实现了这两个功能来在我的应用程序中保存数据:Ios NSKeyedArchiver可与模拟器一起工作,但不能与实际设备一起工作,ios,objective-c,Ios,Objective C,因此,我实现了这两个功能来在我的应用程序中保存数据: - (NSString*)itemArchivePath { NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString* documentDirectory = [documentDirectories firstObject]; retur
- (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
的协议,您的路径构建不正确
这:
需要:
return [documentDirectory stringByAppendingPathComponent:@"items.archive"];
您的原始代码会产生如下路径:
app/Documentsitems.archive的某些路径
注意文件名前缺少斜杠
return [documentDirectory stringByAppendingPathComponent:@"items.archive"];