该操作无法完成。没有这样的文件或目录:但该文件存在

时间:2014-03-20 11:51:54

标签: objective-c macos cocoa

使用writeToFile:options:error:保存文件时遇到一个奇怪的问题在第一种情况下,我遇到以下问题:

writeToFile failed with error Error Domain=NSCocoaErrorDomain Code=4 "The file “preferences.plist” doesn’t exist." UserInfo=0xa12c30 {NSFilePath=file:/Users/patrick/Desktop/Untitled.fef/preferences.plist, NSUnderlyingError=0xa0d130 "The operation couldn’t be completed. No such file or directory"}

但该文件实际上存在于该位置。该文件存储在app文档文件包中。

代码:( NSDocument的子类)

NSString *prefFile = [[[self fileURL] absoluteString] stringByAppendingPathComponent:@"preferences.plist"];

NSError *error;
BOOL succes = [[NSKeyedArchiver archivedDataWithRootObject:documentPreferences] writeToFile:prefFile options:0 error:&error];
if (!succes) {
    NSLog(@"writeToFile failed with error %@", error);
}

1 个答案:

答案 0 :(得分:6)

确保在使用各种类的任何...toFile方法时使用实际路径,而不是错误地使用文件URL。您可以通过查看路径来区分它们。如果路径以file://开头,则无法使用。如果以斜杠/开头,则它是常规文件路径。您仍然可以使用NSFileManager来检查文件是否存在。

与您的代码一样,而不是在absoluteString致电self.fileURL上致电path