gpt4 book ai didi

cocoa - Swift:尝试在循环中更新 NSTextField,但它只获取最后一个值

转载 作者:行者123 更新时间:2023-11-30 10:37:18 26 4
gpt4 key购买 nike

我的非常简单的程序是循环遍历一个数组来导出多个文件。当它处于循环中时,我希望它更新文本字段以告诉用户当前正在导出哪个文件。代码如下所示:

for item in filesArray {
var fileName = item["fileName"]

fileNameExportLabel.stringValue = "Exporting \(fileName).ext"
println("Exporting \(fileName).ext")

//--code to save the stuff goes here--
}

发生的情况是:println工作正常,为每个文件抛出一条消息,但名为fileNameExportLabel的标签仅在导出最后一个文件时更新,因此它在整个循环期间为空白,并在循环结束时获取最后一个文件名。

有什么想法吗?我在这里完全是个菜鸟,我想知道 NSTextField 是否需要更新命令,类似于 TableView 。

提前致谢!

最佳答案

您的循环正在主线程上运行。在函数完成之前,UI 不会更新。由于这需要很长时间,因此您应该在后台线程上执行此操作,然后更新主线程上的文本字段。

试试这个:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
for item in filesArray {
var fileName = item["fileName"]

// Update the text field on the main queue
dispatch_async(dispatch_get_main_queue()) {
fileNameExportLabel.stringValue = "Exporting \(fileName).ext"
}
println("Exporting \(fileName).ext")

//--code to save the stuff goes here--
}
}

关于cocoa - Swift:尝试在循环中更新 NSTextField,但它只获取最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57696244/

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