在我的应用程序中,用户可以选择一个带有弹出对话框的图像。第一次这样做时,一切都按预期运行,在添加镜像文件时,调用fileExistsAtPath:isDirectory,dir返回NO。但是,当用户第二次选择一个图像时,fileExistsAtPath:isDirectory总是返回YES (即使它不是一个目录)。
-(void) addImagesWithPath:(NSURL *)fileURL recursive:(BOOL) recursive{
int i, n;
BOOL dir;
NSError *error;
NSURL *newURL;
[[NSFileManager defaultManager] fileExistsAtPath:[fileURL absoluteString] isDirectory:&dir];编辑:如果我在方法调用前添加"dir = NO“,它似乎可以工作,但感觉像是一个hack。
发布于 2011-09-14 23:29:12
在检查第二个()参数的内容之前,您应该始终检查-[NSFileManager fileExistsAtPath:isDirectory:]的返回值。只有当方法返回YES时,输出参数才有意义。documentation中对此进行了描述
返回时,如果path是目录或者如果最终的path元素是指向目录的符号链接,则包含YES,否则包含NO。如果path不存在,则返回值未定义。如果不需要此信息,则传递NULL。
如果该方法返回NO,则该路径不存在,或者您的应用程序无法访问它。如果它确实存在,请检查您的路径是否为完整路径(例如,它不应该以~开头)。
此外,在将路径传递到NSFileManager时,您应该使用-[NSURL path]而不是-[NSURL absoluteString]。
https://stackoverflow.com/questions/7418121
复制相似问题