【发布时间】:2015-01-07 02:27:08
【问题描述】:
我从 UIImagePickerController 获取 UIImage,然后像这样保存它:
- (void) saveImageLocally:(UIImage *)image {
NSData *imageData = UIImagePNGRepresentation(image);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",@"A5UserAvatar"]];
if (![imageData writeToFile:imagePath atomically:NO])
{
NSLog(@"Failed to cache image data to disk");
}
else
{
NSLog(@"the cachedImagedPath is %@", imagePath);
[[NSUserDefaults standardUserDefaults] setObject:imagePath forKey:@"AvatarKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
并且我可以在访问它之后立即没有问题:
- (UIImage *) getLocalImage {
NSString *path = [[NSUserDefaults standardUserDefaults] stringForKey:@"AvatarKey"];
NSLog(@"PATH FOR IMAGE IS %@", path);
if (path != nil) {
return [UIImage imageWithContentsOfFile:path];
} else {
return [UIImage imageNamed:@"default.gif"];
}
}
上面的代码完全没有问题返回保存的UIImage。
问题是,当我杀死应用程序并重新启动它时,找不到图像! 我目前正在为 iOS 7 和 8 使用 Xcode 6 构建。我知道这个问题在模拟器中是不可避免的,但我也在现场设备上遇到它。
(见Xcode 6 keeps renaming my app's directory in iOS8 simulator after each run.)
我想知道我做错了什么,或者是否有另一种方法可以将任何图像作为文件存储在应用程序中以便像头像一样使用。
【问题讨论】: