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