当前位置 : 主页 > 手机开发 > ios >

fileExistsAtPath:在iOS 8 SDK中不返回正确的值

来源:互联网 收集:自由互联 发布时间:2021-06-11
我的应用程序在iOS 7中完美运行,现在我在切换到iOS 8 SDK后面临一些新的错误. 对于Ex. [NSFileManager defaultManager]文件存在检查方法(fileExistsAtPath :)已不再有效.以下是我的代码中有关当前情况
我的应用程序在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];
}

>我在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
网友评论