【发布时间】:2015-11-16 18:22:36
【问题描述】:
我有一个 PFFiles 数组,我从解析中检索到。 PFFiles 必须转换为图像,但是我正在尝试循环转换它们;
转换后的图像数组必须与包含PFFiles 的数组的顺序相同。
问题是,循环运行并导致所有块触发,然后它们都同时加载,因此imageArray 将导致与PFFiles 的原始数组不同的顺序,因为如果一个对象在前一个对象之前完成加载,它将在前一个对象之前添加到数组中,使其无序。
相反,我想要一个循环,它循环遍历数组中的每个对象,但是在 getDataInBackgroundBlock 完成加载并将当前对象添加到新数组之前,它不会循环到下一个对象。
-(void)organizePhotos {
for (PFFile *picture in pictureArray) {
//This block loads, after the next index in the loop is called, causing the array to be out of order.
[picture getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
[imageArray addObject:[UIImage imageWithData:data]];
[self savePhotos];
}];
}
}
以上是我的代码。无论如何我可以让循环等到getDatanBackgroundWithBlock 完成加载?
【问题讨论】:
-
除了 NickEntin 的建议之外,如果你想使用干净的 Objective-C 解决方案,你可以使用依赖操作。
标签: ios objective-c arrays loops block