gpt4 book ai didi

objective-c - 我遇到了 fileExistsAtPath :isDirectory 问题

转载 作者:行者123 更新时间:2023-12-03 16:51:34 34 4
gpt4 key购买 nike

在我的应用程序中,用户可以通过弹出对话框选择图像。他们第一次这样做时,一切都按预期工作,并且在添加图像期间 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”,它似乎可以工作,但感觉就像一个黑客。

最佳答案

您应该始终检查 -[NSFileManager fileExistsAtPath:isDirectory:] 的返回值在检查第二个(输出)参数的内容之前。仅当方法返回 YES 时,输出参数才有意义。 。 documentation 中对此进行了描述。 :

Upon return, contains YES if path is a directory or if the final path element is a symbolic link that points to a directory, otherwise contains NO. If path doesn’t exist, the return value is undefined. Pass NULL if you do not need this information.

如果该方法返回 NO那么该路径不存在或者您的应用程序无法访问它。如果确实存在,请检查您的路径是否是完整路径(例如,它不应以 ~ 开头)。

此外,您应该使用 -[NSURL path]而不是-[NSURL absoluteString]将路径传递到 NSFileManager 时.

关于objective-c - 我遇到了 fileExistsAtPath :isDirectory 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418121/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com