fileExistsAtPath:在iOS 8 SDK中未返回正确的值
我的应用程序在iOS 7中运行得很好,现在我在切换到iOS 8 SDK后面临一些新的bug 例如,fileExistsAtPath:在iOS 8 SDK中未返回正确的值,ios,iphone,ios8,nsfilemanager,file-exists,Ios,Iphone,Ios8,Nsfilemanager,File Exists,我的应用程序在iOS 7中运行得很好,现在我在切换到iOS 8 SDK后面临一些新的bug 例如,[NSFileManager defaultManager]文件存在性检查方法(fileExistsAtPath:)不再工作。以下是我的代码中有关当前情况的详细信息: 这是一个条件永远不会变为True的代码块: File *tempFile = currentMessage.contains; NSString *address = tempFile.thumbAddress; if ([[NSF
[NSFileManager defaultManager]
文件存在性检查方法(fileExistsAtPath:
)不再工作。以下是我的代码中有关当前情况的详细信息:
File *tempFile = currentMessage.contains;
NSString *address = tempFile.thumbAddress;
if ([[NSFileManager defaultManager] fileExistsAtPath:currentMessage.contains.thumbAddress])
{
image = [UIImage imageWithContentsOfFile:currentMessage.contains.thumbAddress];
}
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
文件existsatpath:
返回否,因此未执行块,则返回
我是否遗漏了什么,或者只是新SDK的一个bug?(因为它与SDK 7.1.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的版本升级,而且是关于下次发布应用程序!尝试调用[NSData dataWithContentsOfFile:address]
如果不选中fileExistsAtPath:
,您会得到nil
还是图像数据?如果得到nil
,则可能是路径不正确。