Ios UICollectionView重新加载数据

Ios UICollectionView重新加载数据,ios,objective-c,core-data,uicollectionview,Ios,Objective C,Core Data,Uicollectionview,经过一些研究,我找不到问题的答案,所以让我解释一下 用户可以创建一个可以包含文本、音频和图像的对象,但不需要全部添加这三个。以后,可以通过添加图像对其进行编辑。那部分很有魅力。现在,我的问题是,我有一个集合视图来显示所有添加的图像,如果图像最初添加到对象中,它会正常工作。如果用户通过添加图像编辑对象,则仅当创建了具有图像的新对象时,才会显示此新图像 在resume(tl;dr版本)中,如果在编辑对象模式下添加图像,图像将不会显示,它仅在以新对象模式添加新图像后显示 以下是如何在新对象模式下获取图

经过一些研究,我找不到问题的答案,所以让我解释一下

用户可以创建一个可以包含文本、音频和图像的对象,但不需要全部添加这三个。以后,可以通过添加图像对其进行编辑。那部分很有魅力。现在,我的问题是,我有一个集合视图来显示所有添加的图像,如果图像最初添加到对象中,它会正常工作。如果用户通过添加图像编辑对象,则仅当创建了具有图像的新对象时,才会显示此新图像

在resume(tl;dr版本)中,如果在编辑对象模式下添加图像,图像将不会显示,它仅在以新对象模式添加新图像后显示

以下是如何在新对象模式下获取图像

NSData *imageData = UIImageJPEGRepresentation(self.image, 0.8f);
    [self.obj setValue:imageData forKey:@"photo"];
如果它没有图像,也会发生这种情况

self.image = [info objectForKey:UIImagePickerControllerOriginalImage];
    NSData *imageData = UIImageJPEGRepresentation(self.image, 0.8f);

    [self.stPhoto setImage:self.image];
    self.obj.photo = imageData;
    [self.obj setValue:imageData forKey:@"photo"];
使用上下文保存和all正确保存

现在,这是我如何从核心数据中获取图像,以在编辑模式下显示(如果有)

这里没问题,只是想提供更多信息

现在我们来谈谈麻烦的部分。这是我获取、调用我创建的方法在字典中循环并重新加载的地方

NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"MyObject"];
[fetchRequest setResultType:NSDictionaryResultType];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"photo", nil]];
self.photos = [[managedObjectContext executeFetchRequest:fetchRequest error:nil]mutableCopy];

self.images = [[NSMutableArray alloc] init];
[self convertDataToImage];

dispatch_async(dispatch_get_main_queue(), ^{
    [self.collectionView reloadData];
});
这是convertDataToImage方法

- (NSMutableArray *)convertDataToImage {
for (NSDictionary *dictionary in self.photos) {
    NSData *data = dictionary[@"photo"];
    UIImage *image = [[UIImage alloc] initWithData:data];
    CGImageRef cgref = [image CGImage];
    CIImage *cim = [image CIImage];

    if (cim == nil && cgref == NULL) {
        NSLog(@"no underlying data");
    } else {
        [self.images addObject:image];
    }
}
if (self.images == nil && [self.images count] == 0) {
    return self.images;
} else {
    return 0;
}

我调试了所有这些,它们都保存、获取、访问了所有内容,工作正常,但是如果在编辑模式下添加图像,除非通过新模式添加新图像,否则它不会显示。我希望我能很好地解释我的问题,并提前向大家表示感谢。

您是否编辑自己的照片和图像并重新加载数据?使用“获取结果”控制器会更好…很难理解您在这里做什么,您对编辑模式的解释也不清楚。您的
convertDataToImage
方法返回
0
,而该方法要返回
NSMutableArray
-最好返回NULL。例如,用户可以创建带有标题的图像。但他可以添加标题,然后编辑,决定添加图像。这是一个简单的编辑页面,您可以在其中看到您添加的内容,并可以更改或添加以前没有的内容。当我转到“收藏”视图时,仅当添加了新图像时,才会显示在“编辑”中添加的图像。我把它改成了零
- (NSMutableArray *)convertDataToImage {
for (NSDictionary *dictionary in self.photos) {
    NSData *data = dictionary[@"photo"];
    UIImage *image = [[UIImage alloc] initWithData:data];
    CGImageRef cgref = [image CGImage];
    CIImage *cim = [image CIImage];

    if (cim == nil && cgref == NULL) {
        NSLog(@"no underlying data");
    } else {
        [self.images addObject:image];
    }
}
if (self.images == nil && [self.images count] == 0) {
    return self.images;
} else {
    return 0;
}