gpt4 book ai didi

cloudkit - 执行(_ :inZoneWith:completionHandler:) deprecated? 与否?iOS 15

转载 作者:行者123 更新时间:2023-12-04 13:26:47 24 4
gpt4 key购买 nike

在 iOS 15 的 Xcode 13 beta 中,我收到一条消息 perform(_:inZoneWith:completionHandler:) (CloudKit) 在 iOS 15 中被弃用并重命名为 fetchRecords(matching:inZoneWith:desiredKeys:resultsLimit:completionHandler:)然而...

  • Apple Docs 网站未声明此方法已弃用:https://developer.apple.com/documentation/cloudkit/ckdatabase/1449127-perform
  • Apple 正在展示对 iOS 15 的其他弃用(另一种方法):https://developer.apple.com/documentation/cloudkit/ckdatabase/3794331-records/
  • fetchRecords(matching:inZoneWith:desiredKeys:resultsLimit:completionHandler:)似乎不存在.. 还.. ( Value of type 'CKDatabase' has no member 'fetchRecords' )

  • 那么,这只是一个不正确的消息,因为它是测试版吗?我是否应该担心重写使用 perform(_:inZoneWith:completionHandler:) 的函数? ?
    这是我的函数,我尝试将其调整为 fetchRecords,但它不存在。我试着让它适应 fetch(withQuery:completionHandler:但我有点迷失了让它工作..
    (此功能只是从 iCloud 私有(private)数据库中删除记录):
            let container = CKContainer(identifier: "MyContainerNameHere")
    let recordType = "DBName"

    //delete all saved icloud records
    let query = CKQuery(recordType: recordType, predicate: NSPredicate(value: true))

    container.privateCloudDatabase.perform(query, inZoneWith: nil) { (rec, err) in
    if let err = err {
    print(err.localizedDescription)
    completion(.failure(err))
    return
    }
    guard let rec = rec else {
    completion(.failure(CloudKitHelperError.castFailure))
    return
    }

    for record in rec {
    container.privateCloudDatabase.delete(withRecordID: record.recordID) { (recordId, err) in
    if let err = err {
    print(err.localizedDescription)
    completion(.failure(err))
    return
    }
    guard recordId != nil else {
    completion(.failure(CloudKitHelperError.recordIDFailure))
    return
    }
    }
    }
    }
    任何见解表示赞赏..
    谢谢
    更新
    我会说,是的,这似乎是一个错误或至少是一个过早的消息,但是,在为 async/await 重写代码后,它更清晰、更易于阅读。对于那些正在努力解决这个问题的人,这里是上面转换为 Async/Await 的代码示例:
    @MainActor func newDeleteCloudKit() async throws {

    let container = CKContainer(identifier: "MyContainerNameHere")
    let recordType = "DBName"
    let query = CKQuery(recordType: recordType, predicate: NSPredicate(value: true))
    let result = try await container.privateCloudDatabase.records(matching: query)

    for record in result.0 {
    try await container.privateCloudDatabase.deleteRecord(withID: record.0)
    }

    }

    最佳答案

    我在 beta 5 中,我仍然收到此警告,但该方法尚未实现,因此看起来他们并没有弃用旧的,只是忘记删除警告。我们应该会在几天内获得 Xcode 的最终版本。
    更新:看起来好像犯了一个错误。新方法不叫fetchedRecords(),而是叫records() https://developer.apple.com/documentation/cloudkit/ckdatabase/3856524-records

    关于cloudkit - 执行(_ :inZoneWith:completionHandler:) deprecated? 与否?iOS 15,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67943790/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com