Ios NSKeyedArchiver archiveRootObject不断返回NO

Ios NSKeyedArchiver archiveRootObject不断返回NO,ios,nskeyedarchiver,Ios,Nskeyedarchiver,在过去的几个小时里,我一直在想办法解决这个问题,但我已经没有什么想法了 我只想归档一个对象,但是方法archiveRootObject不断返回NO 这是我的密码: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cacheDirectory = [paths objectAtIndex:0]; cacheDirectory = [ca

在过去的几个小时里,我一直在想办法解决这个问题,但我已经没有什么想法了

我只想归档一个对象,但是方法
archiveRootObject
不断返回
NO

这是我的密码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cacheDirectory = [paths objectAtIndex:0];
cacheDirectory = [cacheDirectory stringByAppendingPathComponent:@"MyAppCache"];
NSString *fullPath = [cacheDirectory stringByAppendingPathComponent:@"archive.data"];

if(![[NSFileManager defaultManager] fileExistsAtPath:fullPath]){
    [[NSFileManager defaultManager] createDirectoryAtPath:fullPath withIntermediateDirectories:YES attributes:nil error:nil];
}

NSArray *array = [NSArray arrayWithObjects:@"hello", @"world", nil];
NSLog(@"Full Path: %@", fullPath);
BOOL res = [NSKeyedArchiver archiveRootObject:array toFile:fullPath];

if(res){
    NSLog(@"YES");
}else{
    NSLog(@"NO");
}
每次我运行它时,它都会打印
NO


任何帮助都将不胜感激

创建一个路径为
fullPath
的目录,然后尝试在同一路径写入文件。用这样的文件覆盖目录是不可能的。使用
cacheDirectory
字符串创建目录。

NSString*cacheDirectory不是可变字符串,初始化后,尝试修改它,以便写入顶级目录

要快速修复,请尝试:

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,   NSUserDomainMask, YES);
NSString *documentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;
NSString *documentsResourcesPath = [documentPath  stringByAppendingPathComponent:@"MyAppCache"];

NSString *fullPath = [documentsResourcesPath stringByAppendingPathComponent:@"archive.data"];

谢谢你的建议吉姆,我试过你的建议,但没有用。结果斯文发现了这个错误。我的代码试图用一个文件覆盖一个目录。嗯,我的代码可以工作,但我忽略了更改创建目录代码以使用正确的iVAR。如果(![[NSFileManager defaultManager]fileExistsAtPath:fullPath]){[[NSFileManager defaultManager]createDirectoryAtPath:documentsResourcesPath with IntermediateDirectory:YES属性:nil错误:nil];祝你好运,并致以最良好的问候,JimThis在保存数据时为我工作,但你如何从中加载数据?提前谢谢。差点把我的头发拔出来。谢谢你,Sven!