将图像数据保存到核心数据但再次启动模拟器,它消失了
Posted
技术标签:
【中文标题】将图像数据保存到核心数据但再次启动模拟器,它消失了【英文标题】:Saved image data to core data but launches simulator again, it's gone 【发布时间】:2013-12-29 07:38:56 【问题描述】:我已经将图像数据保存到core data,关键是二进制数据格式。保存到核心数据后,我使用 valueForKey: 在 UIImageView 中显示图像。但是我再次启动模拟器后,仍然保存了所有内容,但是图像数据没有了,当我 NSLog 键的数据描述时,它是空的。
NSDictionary *show = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil];
Summary *summary = [NSEntityDescription insertNewObjectForEntityForName:@"Summary" inManagedObjectContext:weakSelf.managedObjectContext];
summary.title = show[@"title"];
summary.poster = show[@"images"][@"poster"];
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:[NSURL URLWithString:summary.poster] options:SDWebImageProgressiveDownload progress:^(NSUInteger receivedSize, long long expectedSize)
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
NSData *data = UIImageJPEGRepresentation(image, 0.5);
summary.posterImageData = data;
];
[weakSelf.managedObjectContext dct_saveWithCompletionHandler:^(BOOL success, NSError *error)
if (success)
else
NSLog(@"%@", error);
];
【问题讨论】:
【参考方案1】:我认为您当前的代码,在 dct_saveWithCompletionHandler 之后调用了 downloadWithURL 的完成块,尝试:
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:[NSURL URLWithString:summary.poster] options:SDWebImageProgressiveDownload progress:^(NSUInteger receivedSize, long long expectedSize)
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
NSData *data = UIImageJPEGRepresentation(image, 0.5);
summary.posterImageData = data;
[weakSelf.managedObjectContext dct_saveWithCompletionHandler:^(BOOL success, NSError *error)
if (success)
else
NSLog(@"%@", error);
];
];
【讨论】:
如果保存不成功,我将无法创建获取请求并取回结果?【参考方案2】:确保您实际保存的是托管对象上下文。仔细检查您是否也正确设置了 MOC 的并发类型。
【讨论】:
我保存了上下文,然后创建了一个获取请求来取回结果。这是否意味着我已经保存了上下文。如果不是,如何确定?以上是关于将图像数据保存到核心数据但再次启动模拟器,它消失了的主要内容,如果未能解决你的问题,请参考以下文章