更新后,应用程序不会从文档文件夹加载现有文件

时间:2012-10-20 09:45:47

标签: objective-c ios xcode nsfilemanager

我遇到了在临时更新后从App的文档文件夹加载现有图像的问题。

我在网上搜索了答案,我发现我必须使用文件的相对路径,以便在更新应用程序时路径保持不变。

有人可以告诉我该怎么做吗?

现在,当ImagePicker完成时,我使用以下内容保存文件(图像):

NSString *imageFilename = [NSString stringWithFormat:@"%@-profilePhoto.jpg",[NSDate date]];
NSArray *paths = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

imagePath = [NSString stringWithFormat:@"%@/%@", paths, imageFilename];

请帮帮我!

2 个答案:

答案 0 :(得分:1)

我找到了解决方案:

我选择让系统在名字后面搜索它们,而不是从完整路径加载图像。

所以而不是:

//Full path stored in a dictionary:
    profilePhotoPath = [userDict objectForKey:@"profilepic"];
//Load the image from path:
    profilePhoto = [[UIImage alloc] initWithContentsOfFile:profilePhotoPath];

我现在使用以下内容:

//Load image from documentsDirectory, filename
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    profilePhotoPath = [userDict objectForKey:@"profilepic"];
    profilePhotoPath = [documentsDirectory stringByAppendingPathComponent:[profilePhotoPath lastPathComponent]];
    profilePhoto = [[UIImage alloc] initWithContentsOfFile:profilePhotoPath];

通过使用“lastPathComponent”属性,我基本上从路径中删除除文件名之外的所有内容,然后使用NSSearch将文件提供给我。

答案 1 :(得分:0)

此行引发问题

NSArray *paths = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

此问题是变量路径属于NSArray而非NSString

将其更改为,

NSString *paths = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *paths = [path objectAtIndex:0];