在我的应用程序中,用户可以使用弹出对话框选择图像.第一次这样做时,一切都按预期工作,并且在添加图像文件时,将调用isExistAtPath: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];
Run Code Online (Sandbox Code Playgroud)
编辑:如果我在方法调用之前添加"dir = NO"它似乎工作,但它感觉像一个黑客.
小智 6
在检查第二个(输出)参数的内容之前,应始终检查返回值-[NSFileManager fileExistsAtPath:isDirectory:].输出参数仅在方法返回时才有意义YES.这在文档中描述:
返回时,包含
YESif path是目录还是最终路径元素是指向目录的符号链接,否则包含NO.如果path不存在,则返回值未定义.通过NULL如果你并不需要这些信息.
如果方法返回,NO则路径不存在或您的应用程序无法访问它.如果确实存在,请检查您的路径是否为完整路径(例如,它不应该以路径开头~).
此外,您应该使用-[NSURL path]而不是-[NSURL absoluteString]传递路径时NSFileManager.
| 归档时间: |
|
| 查看次数: |
1389 次 |
| 最近记录: |