gpt4 book ai didi

ios - 如何创建一个 UIImages 数组

转载 作者:行者123 更新时间:2023-11-29 12:16:24 27 4
gpt4 key购买 nike

我正在像这样存储来自 Parse 数据库的图像:

PFFile *firstImageFile = self.product[@"firstThumbnailFile"];
[firstImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
if (!error) {
self.firstImage = [UIImage imageWithData:imageData];
}
}];

我想将图像保存为数组以在 ScrollView 中显示它们。

如果我这样做,它会起作用:

self.galleryImages = [NSArray arrayWithObjects: [UIImage imageNamed:@"s2.jpg"], [UIImage imageNamed:@"s1.jpg"], nil];

但如果我尝试使用 UIImage 本身,则不会出现图像。

self.galleryImages = [NSArray arrayWithObjects: self.firstImage, self.secondImage, nil];

有什么帮助吗?谢谢。

最佳答案

这是一个常见问题的形式:如何执行许多异步操作(无需深度嵌套完成 block )并知道它们何时完成。我使用的方法是将操作的参数视为待办事项列表,并构建一个递归处理列表的方法....

- (void)loadPFFiles:(NSArray *)array filling:(NSMutableDictonary *)results completion:(void (^)(BOOL))completion {
NSInteger count = array.count;
// degenerate case is an empty array which means we're done
if (!count) return completion(YES);

// otherwise, do the first operation on the to do list, then do the remainder
PFFile *file = array[0];
NSArray *remainder = [array subarrayWithRange:NSMakeRange(0, count-1)];

[file getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:imageData];
results[file.name] = image;
[self loadPFFiles:remainder filling:results completion:completion];
} else {
completion(NO);
}
}];
}

这样调用它(稍微猜测一下你的模型):

NSArray *pfFiles = @[ self.product[@"firstThumbnailFile"], self.product[@"secondThumbnailFile"] ];
NSMutableDictionary *result = [@{} mutableCopy];

[self loadPFFiles:pfFiles filling:result completion:^(BOOL success) {
if (success) {
// result will be an dictionary of the loaded images
// indexed by the file names
}
}];

关于ios - 如何创建一个 UIImages 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31897706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com