【问题标题】:fileExistsAtPath: Does Not Return Correct Value in iOS 8 SDKfileExistsAtPath:在 iOS 8 SDK 中不返回正确的值
【发布时间】:2014-12-21 17:12:30
【问题描述】:

我的应用在 iOS 7 中运行良好,但现在我在切换到 iOS 8 SDK 后遇到了一些新错误。

例如。 [NSFileManager defaultManager] 文件存在检查方法 (fileExistsAtPath:) 不再有效。这是我的代码中有关当前情况的详细信息:

  1. 这是条件永远不会变成True的代码块:

    File *tempFile = currentMessage.contains;
    NSString *address = tempFile.thumbAddress;
    
    if ([[NSFileManager defaultManager] fileExistsAtPath:currentMessage.contains.thumbAddress])
    {
        image = [UIImage imageWithContentsOfFile:currentMessage.contains.thumbAddress];
    }
    
  2. 我在 if 之前放了一个断点并跟踪它以查看包含的内容:

    Printing description of address:
    /Users/Unkn0wn/Library/Developer/CoreSimulator/Devices/C07E1D76-372E-4C9A-8749-50D369294FBA/data/Containers/Data/Application/1DC7DB3A-B0A2-43AE-9EDA-3E121786D1AA/Documents/FileAt141406917489510096thumbnail.jpg
    
  3. 我已经检查了 Finder 以查看文件是否确实存在(地址是从控制台复制的,因此在检查路径和文件是否存在时不会出现输入错误和拼写错误):

但是if 块没有被执行,因为fileExistsAtPath: 返回NO

是我遗漏了什么还是只是新 SDK 的一个错误? (因为它与 SDK 7.1.1 完美配合)

非常感谢任何建议。

谢谢

【问题讨论】:

  • 尝试在不检查fileExistsAtPath:的情况下调用[NSData dataWithContentsOfFile:address];,你会得到nil还是你的图像数据?如果你得到nil,你可能有一个不正确的路径。

标签: ios iphone ios8 nsfilemanager file-exists


【解决方案1】:

如果thumbAddress 是完整路径(不是相对路径),则在更新应用时可能会由于应用文件夹更改而导致错误,例如,您的应用的第一个版本可能位于该路径:

/Users/Unkn0wn/Library/Developer/.../Application/ABCD/

当你更新应用时,目录会发生变化,例如:

/Users/Unkn0wn/Library/Developer/.../Application/EFGH/

因此,如果您在应用的第一个版本中保存图片的完整路径,例如:

ABCD/yourImage.jpg

并尝试使用新版本的应用程序检索此图像,因为您的图像现在将位于路径中,所以将不再找到此图像:

EFGH/yourImage.jpg

希望对你有帮助!


编辑

也许你的绝对路径不正确。尝试使用相对路径调用它:

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
path = [path stringByAppendingString:@"FileAt141406917489510096thumbnail.jpg"];

NSData *imageData = [NSData dataWithContentsOfFile:path]; // Should be != nil

【讨论】:

  • 这也可能是权限问题。如果存在,但无法读取该文件夹,则找不到。
  • 我说的是单一版本,不是更新应用!
  • 是的,看来这不仅仅是iOS 8的版本升级,还有下次启动应用!
猜你喜欢
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 2016-03-23
相关资源
最近更新 更多