我使用以下代码来检索文件的上传顺序。文件必须按此特定顺序上传,不能同时上传。因此,我不能将我的代码放在这个for循环中,因为它会挂起线程。
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES];
NSArray *sortedArray = [agenciescontroller.arrangedObjects sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
for (NSManagedObject *a in sortedArray)
{
for (NSMutableDictionary *d in imagescontroller.arrangedObjects)
{
if ([[NSString stringWithFormat:@"%@",[d valueForKey:[a valueForKey:@"agency"]]] isEqualToString: @"1"])
{
///////////////////////////UPLOAD FILES HERE/////////////////////////////
checkedchecks += 1;
NSLog(@"Uploading %@ to %@", [d valueForKey:@"filename"], [a valueForKey:@"agency"]);
}
}
}
我的想法是使用此for循环来填充NSMutableArray
或NSMutableDictionaries
,其中包含要上传的精确文件列表,然后逐个查看此列表。这是一个明智的想法还是有更好的解决方案?还要记住,一旦上传文件,我必须更新foor循环中的可变字典内的值。在检查值=“1”的情况下,上传完成后必须将特定值设置为0。
答案 0 :(得分:1)
使用NSOperationQueue
将maxConcurrentOperationCount
属性设置为1.然后在现有循环中为每次上传添加一个NSOperation
。
要更新字典中的值,您可以向NSOperation
个对象添加完成块。只需确保在更新值时使用必要的同步,因为完成块将在某个后台线程上运行。