我有一个应用程序,允许用户从网站下载图像。 (玩具收集者清单2 - https://itunes.apple.com/us/app/toy-collector-checklist-2/id919363870?mt=8)
理论上,用户可以下载数千张图像,从而创造了相当大的使用量。我试图添加一个"删除所有图像"这样用户可以在不删除应用程序的情况下清除图像。
代码似乎有效。按下按钮时图像不再可见,核心数据值返回" nil"当我检查它时 - 但是当我进入我的使用设置时,空间似乎没有被释放。我正在使用我认为非常标准的获取和更新代码:
CoreDataHelper *cdh =
[(AppDelegate *)[[UIApplication sharedApplication] delegate] cdh];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Item"
inManagedObjectContext:cdh.context];
[fetchRequest setEntity:entity];
// [fetchRequest setPredicate:nil];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"photo != nil OR photoAlt != nil OR photoCam != nil"]];
[fetchRequest setFetchBatchSize:500];
NSManagedObject *removePhotoFromObject;
NSError *error = nil;
NSArray *results = [cdh.context executeFetchRequest:fetchRequest error:&error];
for (removePhotoFromObject in results) {
[removePhotoFromObject setValue:nil forKey:@"photoCam"];
[removePhotoFromObject setValue:nil forKey:@"photo"];
[removePhotoFromObject setValue:nil forKey:@"photoAlt"];
[removePhotoFromObject setValue:nil forKey:@"thumbnail"];
}
[cdh backgroundSaveContext];
将可能的照片位置的值设置为nil。如果我再次运行相同的代码,它不会将它们添加到数组中(因为它们的值现在为零),所以我知道该部分正在运行。并删除图像和缩略图。但是当我在“设置”选项卡中签入时,数据使用情况并没有改变。
可能会破坏工作的东西:
物品是一个实体。 照片,photoAlt和photoCam也是每个实体,有一个" To One"与物品的关系
它们都被归结为"二进制数据"在模型中。
任何想法和建议将不胜感激。我已经看过这些论坛以及更大的互联网,但到目前为止还无法找到解决方案。
扎克