Unk*_*Bit 3 iphone nsfilemanager file-exists ios ios8
我的应用程序在iOS 7中完美运行,现在我在切换到iOS 8 SDK后面临一些新的错误.
对于Ex.[NSFileManager defaultManager]文件存在检查方法(fileExistsAtPath:)不再有效.以下是我的代码中有关当前情况的详细信息:
这是代码块,其条件永远不会变为True:
File *tempFile = currentMessage.contains;
NSString *address = tempFile.thumbAddress;
if ([[NSFileManager defaultManager] fileExistsAtPath:currentMessage.contains.thumbAddress])
{
image = [UIImage imageWithContentsOfFile:currentMessage.contains.thumbAddress];
}
Run Code Online (Sandbox Code Playgroud)我在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
Run Code Online (Sandbox Code Playgroud)我检查了Finder以查看文件是否确实存在(地址是从控制台复制的,因此在检查路径和文件存在时不会出现错误输入和拼写错误):

但是if因为fileExistsAtPath:返回而没有执行该块NO.
我错过了什么,或者只是新SDK的错误?(因为它与SDK 7.1.1完美配合)
任何建议都非常感谢.
谢谢
如果thumbAddress是完整路径(不是相对路径),则应用程序更新时可能会导致错误,因为应用程序文件夹更改,例如,应用程序的第一个版本可能位于该路径:
/Users/Unkn0wn/Library/Developer/.../Application/ABCD/
Run Code Online (Sandbox Code Playgroud)
更新应用程序时,目录将更改,例如:
/Users/Unkn0wn/Library/Developer/.../Application/EFGH/
Run Code Online (Sandbox Code Playgroud)
因此,如果您在应用的第一个版本中保存图像的完整路径,例如:
ABCD/yourImage.jpg
Run Code Online (Sandbox Code Playgroud)
并尝试使用新版本的应用程序检索此图像,此图像将不再被找到,因为您的图像现在将在路径中:
EFGH/yourImage.jpg
Run Code Online (Sandbox Code Playgroud)
希望它有所帮助!
编辑
也许你的绝对路径不正确.尝试使用相对路径调用它:
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
path = [path stringByAppendingString:@"FileAt141406917489510096thumbnail.jpg"];
NSData *imageData = [NSData dataWithContentsOfFile:path]; // Should be != nil
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3237 次 |
| 最近记录: |