我遇到了在临时更新后从App的文档文件夹加载现有图像的问题。
我在网上搜索了答案,我发现我必须使用文件的相对路径,以便在更新应用程序时路径保持不变。
有人可以告诉我该怎么做吗?
现在,当ImagePicker完成时,我使用以下内容保存文件(图像):
NSString *imageFilename = [NSString stringWithFormat:@"%@-profilePhoto.jpg",[NSDate date]];
NSArray *paths = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
imagePath = [NSString stringWithFormat:@"%@/%@", paths, imageFilename];
请帮帮我!
答案 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];