fetchDatabaseChangesResultBlock 闭包的语法是什么?

What is the syntax for this closure for fetchDatabaseChangesResultBlock?

iOS Cloudkit FetchDatabaseChangesOperation() 的闭包块定义为:

fetchDatabaseChangesResultBlock: ((_ operationResult:
    Result<(serverChangeToken: CKServerChangeToken, moreComing: Bool), Error>) -> Void)?

我的问题是,实际的闭包块是什么样的?

例如,我试过这个,它编译:

let operation = CKFetchDatabaseChangesOperation(previousServerChangeToken: changeToken)

operation.fetchDatabaseChangesResultBlock = {
    result in
}

需要获取 serverChangeToken、moreComing 值和错误。但是我不知道“结果”是什么,或者即使我有正确的签名。

如有任何帮助,我们将不胜感激!我想不通这个。

跟进:根据回答,这里是解决问题的具体代码。

operation.fetchDatabaseChangesResultBlock = {
            result in
            
            switch result {
            case .success(let tuple):
                let token = tuple.serverChangeToken
                let moreComing = tuple.moreComing
                  // Do something
                }
            case .failure(let error):
                // Handle error
                break;
            }
        }

如您所见,闭包的类型是 (Result<(serverChangeToken: CKServerChangeToken, moreComing: Bool), Error>) -> Void)?。分解我们看到:

  1. 整个事情是可选的,这意味着它可以是 nil.
  2. 当它不是nil时,它是(Result<(serverChangeToken: CKServerChangeToken, moreComing: Bool), Error>) -> Void类型的闭包。
  3. 此闭包类型只有一个参数,return 没有任何参数。
  4. 参数的类型为 Result<(serverChangeToken: CKServerChangeToken, moreComing: Bool), Error>。这是来自 Swift 标准库的 Result 类型,其:
    • Success 类型是 (serverChangeToken: CKServerChangeToken, moreComing: Bool) (只是两个值的元组)
    • Failure 类型只是 Error(即它不再受到 Result 已经存在的 Failure: Error 约束的约束)。