fetchDatabaseChangesResultBlock的这个闭包的语法是什么



iOS Cloudkit FetchDatabaseChangesOperation((有一个闭包块定义为:

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

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

例如,我尝试了这个,它编译:

let operation = CKFetchDatabaseChangesOperation(previousServerChangeToken: changeToken)
operation.fetchDatabaseChangesResultBlock = {
result in
}

需要获取serverChangeToken、moreComing值和Error。但我搞不清楚";结果";是,或者即使我有正确的签名。

任何帮助都将不胜感激!我想不通这个。

后续:基于答案,以下是解决问题的具体代码。

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. 这个闭包类型有一个参数,不返回任何内容
  4. 参数的类型为Result<(serverChangeToken: CKServerChangeToken, moreComing: Bool), Error>。这是Swift标准库中的Result类型,其:
    • Success类型是(serverChangeToken: CKServerChangeToken, moreComing: Bool)(只是两个值的元组(
    • Failure类型仅为Error(即,它不再受到约束,而不是Result已经存在的Failure: Error约束(

最新更新