ios – Swift 3.0 CloudKit fetchDatabaseChangesCompletionBlock错误

ios – Swift 3.0 CloudKit fetchDatabaseChangesCompletionBlock错误,第1张

概述我跟随 WWDC Session about CloudKit.在这里,有这个代码剪断: let changesOperation = CKFetchDatabaseChangesOperation(previousServerChangeToken: privateDatabaseChangeToken)//(...)changesOperation.fetchDatabaseChanges 我跟随 WWDC Session about CloudKit.在这里,有这个代码剪断:

let changesOperation = CKFetchDatabaseChangesOperation(prevIoUsServerChangetoken: privateDatabaseChangetoken)//(...)changesOperation.fetchDatabaseChangesCompletionBlock = {        (newToken: CKServerChangetoken?,more: Bool,error: NSError?) -> VoID in        // error handling here        self.sharedDBChangetoken = newToken // cache new token        self.fetchZoneChanges(callback) // using CKFetchRecordZoneChangesOperation    }

即使代码完全是从幻灯片中复制的,XCode也会出现这个错误

Cannot assign value of type ‘(CKServerChangetoken?,Bool,NSError?) -> VoID’ to type ‘((CKServerChangetoken?,Error?) -> VoID)?’

我正在使用XCode 8.0 Beta 4,目标是iOS 10,以防这应该是编译器错误.

解决方法 在Beta 4 [需要引证]中,实施了快速演进提议 SE-0112,影响了错误处理.

这里重要的一点是,Objective-C NSError类型在Swift中作为Error(以前的ErrorProtocol)类型而不是NSError导入.

只需更新您的类型注释:

changesOperation.fetchDatabaseChangesCompletionBlock = {    (newToken: CKServerChangetoken?,error: Error?) -> VoID in    // ...}

作为旁注,您实际上可以完全省略参数类型:

changesOperation.fetchDatabaseChangesCompletionBlock = { newToken,more,error in    // ...}

对于错误处理,我可以告诉传递的错误通常是CKError,这是一个新的(?)结构,它封装了旧NSError上userInfo字典的所有(?).

changesOperation.fetchDatabaseChangesCompletionBlock = { newToken,error in    guard error == nil else {        if let ckerror = error as? ckerror {            // ... Handle the ckerror        }        return    }    // ... Do something useful}
总结

以上是内存溢出为你收集整理的ios – Swift 3.0 CloudKit fetchDatabaseChangesCompletionBlock错误全部内容,希望文章能够帮你解决ios – Swift 3.0 CloudKit fetchDatabaseChangesCompletionBlock错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1016089.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存