正如您所看到的,闭包的类型是
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)?
。我们看到:
- 整件事都是可选的,这意味着它可以是
nil
- 当它不是
nil
时,它是类型为(Result<(serverChangeToken: CKServerChangeToken, moreComing: Bool), Error>) -> Void
的闭包 - 这个闭包类型有一个参数,不返回任何内容
- 参数的类型为
Result<(serverChangeToken: CKServerChangeToken, moreComing: Bool), Error>
。这是Swift标准库中的Result
类型,其:Success
类型是(serverChangeToken: CKServerChangeToken, moreComing: Bool)
(只是两个值的元组(Failure
类型仅为Error
(即,它不再受到约束,而不是Result
已经存在的Failure: Error
约束(