我的应用程序在iOS 7中完美运行,现在我在切换到iOS 8 SDK后面临一些新的错误. 对于Ex. [NSFileManager defaultManager]文件存在检查方法(fileExistsAtPath :)已不再有效.以下是我的代码中有关当前情况
对于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]; }
>我在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
>我检查了Finder以查看文件是否确实存在(地址是从控制台复制的,因此在检查路径和文件存在时不会出现错误输入和拼写错误):
但是如果由于fileExistsAtPath:返回NO,则不执行块.
我错过了什么,或者只是新SDK的错误? (因为它与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