【发布时间】:2015-01-30 21:07:36
【问题描述】:
我刚刚遇到了以下问题中描述的问题:
我有一个应用程序,您可以在其中将图像附加到项目,如果您不想要,可以使用默认图像。
所有的项目都是使用Core Data“保存”的,所以项目实体基本上有一个“imageFilePath”属性。
如果选择默认图片,那么imageFile路径设置为:
imageFilePath = [[NSBundle mainBundle] pathForResource:@"defaultImage1" ofType:@"png"]
问题在于,对于 iOS8,此路径在下次运行时不再有效,因此我的应用程序将图像视为丢失。
对于此问题,您会推荐什么最佳解决方案?
1) 也许我可以在模型中设置这是一个捆绑资源,而不是放置完整路径?然后我会有两种资源。
2) 我可以在第一次应用程序启动时复制文档目录中所需的资源吗?
谢谢。
---编辑---- 文档目录也在“移动”,所以 2) 不是一个真正的选择..
--- 第二次编辑 ---
所以我采用了以下方法。我引入了一个新的对象“ImageStore”,它可以使用键存储/检索图像,作为奖励,它可以缓存创建的 UIImages。
@interface MyImageStore : NSObject
+ (id) sharedStore;
- (NSString*) imagePathForKey:(NSString*) key;
- (void) setImageData: (NSData*) data forKey: (NSString*) key;
- (UIImage*) getImageForKey: (NSString*) key;
- (void) deleteImageForKey: (NSString*) key;
- (void) clearCachedImages;
@end
现在 Item 实体有一个 imageFileKey 属性而不是 imageFilePath。
【问题讨论】:
标签: ios objective-c ios8 nsbundle