Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用块枚举/迭代数组,并知道何时完成_Ios_Arrays_Swift_Objective C Blocks - Fatal编程技术网

Ios 使用块枚举/迭代数组,并知道何时完成

Ios 使用块枚举/迭代数组,并知道何时完成,ios,arrays,swift,objective-c-blocks,Ios,Arrays,Swift,Objective C Blocks,我想在Swift中遍历一个数组,我需要知道何时到达最后一项。我正在使用enumerateObjectsUsingBlock。由于没有可选的完成块(与某些CoreAnimation方法类似),我假设stop参数表示结束点–这是否正确 itemsArray.enumerateObjectsUsingBlock { (object, index, stop) -> Void in self.displayedItems.addObject(object a

我想在Swift中遍历一个数组,我需要知道何时到达最后一项。我正在使用enumerateObjectsUsingBlock。由于没有可选的完成块(与某些CoreAnimation方法类似),我假设stop参数表示结束点–这是否正确

    itemsArray.enumerateObjectsUsingBlock {
        (object, index, stop) -> Void in
        self.displayedItems.addObject(object as SpecialItem)
        if stop == true {
           println("the end.")
        }
    }

stop的类型似乎是非女性化指针。因此,我不能简单地测试它是否为真/假或零。如何知道枚举何时完成?

EnumerateObjectsSusingBlock同步执行。枚举已完成 当方法返回时

stop
是对布尔值的引用,可将其设置为
true
以停止进一步处理, 例如:

itemsArray.enumerateObjectsUsingBlock {
    (object, index, stop) -> Void in

    // process at most 5 elements:
    if index == 4 {
       stop.memory = true
    }
}

如果stop==true,则在块内测试
没有意义。

EnumerateObjectsSusingBlock
同步执行。枚举已完成 当方法返回时

stop
是对布尔值的引用,可将其设置为
true
以停止进一步处理, 例如:

itemsArray.enumerateObjectsUsingBlock {
    (object, index, stop) -> Void in

    // process at most 5 elements:
    if index == 4 {
       stop.memory = true
    }
}

如果stop==true,则在块内测试
是没有意义的。

获取块之前的计数,然后将索引与计数进行比较,以确定您何时处于最后一项

如果您只想在枚举完成后执行代码,只需将代码紧跟在块代码之后。此块不是异步的


注意:Stop是一个变量,可以在块中设置它以提前终止枚举。请参阅文档。

获取块之前的计数,然后将索引与计数进行比较,以确定您何时处于最后一项

如果您只想在枚举完成后执行代码,只需将代码紧跟在块代码之后。此块不是异步的


注意:Stop是一个变量,可以在块中设置它以提前终止枚举。请参阅文档。

啊,好的。这是有道理的。我认为块总是异步工作的。@ups@BerndPlontsch:块或多或少是一段代码(类似于函数,但有额外的状态,如变量绑定)。块本身是同步执行的。它可以用于异步方法,如
dispatch\u async()
等。啊,好的。这是有道理的。我认为块总是异步工作的。@ups@BerndPlontsch:块或多或少是一段代码(类似于函数,但有额外的状态,如变量绑定)。块本身是同步执行的。它可以用于异步方法,如
dispatch\u async()
等。