存储特定值列表的好解决方案?

时间:2013-02-16 14:59:01

标签: objective-c for-loop nsmutablearray

我使用以下代码来检索文件的上传顺序。文件必须按此特定顺序上传,不能同时上传。因此,我不能将我的代码放在这个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循环来填充NSMutableArrayNSMutableDictionaries,其中包含要上传的精确文件列表,然后逐个查看此列表。这是一个明智的想法还是有更好的解决方案?还要记住,一旦上传文件,我必须更新foor循环中的可变字典内的值。在检查值=“1”的情况下,上传完成后必须将特定值设置为0。

1 个答案:

答案 0 :(得分:1)

使用NSOperationQueuemaxConcurrentOperationCount属性设置为1.然后在现有循环中为每次上传添加一个NSOperation

要更新字典中的值,您可以向NSOperation个对象添加完成块。只需确保在更新值时使用必要的同步,因为完成块将在某个后台线程上运行。