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"];