Ios 如何检查FileManager.default.setImpublication()的结果

Ios 如何检查FileManager.default.setImpublication()的结果,ios,swift,multithreading,cocoa,Ios,Swift,Multithreading,Cocoa,我正在用Swift制作一个基于文档的iOS应用程序,它使用FileManager.default.setUbious()将文件保存到应用程序的iCloud驱动器文件夹中。现在,我找不到一种方法来确定setUbiouse何时成功运行(正如我在文章中提到的) 我查阅了苹果公司的文档,它说Objective-C版本的setousibility()返回了一个Bool,而 在Swift中,此方法返回Void并用抛出标记 关键字,指示在失败时抛出错误 我想知道此函数何时成功运行,以便我可以运行其他代码来说明

我正在用Swift制作一个基于文档的iOS应用程序,它使用
FileManager.default.setUbious()
将文件保存到应用程序的iCloud驱动器文件夹中。现在,我找不到一种方法来确定
setUbiouse
何时成功运行(正如我在文章中提到的)

我查阅了苹果公司的文档,它说Objective-C版本的
setousibility()
返回了一个
Bool
,而

在Swift中,此方法返回Void并用抛出标记 关键字,指示在失败时抛出错误

我想知道此函数何时成功运行,以便我可以运行其他代码来说明上载的文档-我找到的最接近的方法是在函数的描述中,其中说明:

使用分派队列从后台线程调用此方法。之后 该方法返回消息,通知主线程更新其余的 你的应用程序的数据结构

问题是,我不知道“发送主线程消息以更新应用程序的其余数据结构”是什么意思。在此方面的任何帮助都将不胜感激


编辑:在进一步研究之后,我认为我的主要问题是它说“在方法返回后…”。如果该方法只返回“Void”,我怎么能等到它返回后再更新其余的数据结构呢?

这里是一般的想法:

DispatchQueue.global(qos: .background).async {
    // This will run on a background Thread

    let succeeded: Bool
    try {
        FileManager.default.setUbiquitous( ... )
        succeeded = true
    }
    catch {
        // handle error
        succeeded = false
    }

    DispatchQueue.main.async {
        // This will run back on the main thread
        reportResult(succeeded)
    }
}

在文件加载完成之前,仍然会运行“reportResult()”函数。有没有办法在后台线程上暂停函数,直到文件保存为止?@Grant Odd,我认为
setousible
是一个同步函数。