【问题标题】:Terminating app, reason: 'containerIdentifier can not be nil' terminating with uncaught exception of type CKException终止应用程序,原因:“containerIdentifier 不能为零”以 CKException 类型的未捕获异常终止
【发布时间】:2021-10-18 19:58:30
【问题描述】:

我是 Swift 的新手。 我有我的第一个 CloudKit 项目。 但不幸的是,我从 CloudKit 获取数据时出错:

我收到此错误:

*** Terminating app due to uncaught exception 'CKException', reason: 'containerIdentifier can not be nil'
terminating with uncaught exception of type CKException

使用此代码:

import Foundation
import CloudKit

class CKRelation {
    static let database = CKContainer.default().publicCloudDatabase

    class func fetch(completion: @escaping (Result<[Relation], Error>) -> ()) {
        let predicate = NSPredicate(value: true)
        let name = NSSortDescriptor(key: "LastName", ascending: true)
        let query = CKQuery(recordType: "Clients", predicate: predicate)
        query.sortDescriptors = [name]

        let operation = CKQueryOperation(query: query)
        operation.desiredKeys = ["FirstName", "Initials", "LastName", "MiddleName", "RelationId"]
        operation.resultsLimit = 50

        var newRelations = [Relation]()

        operation.recordFetchedBlock = { record in
            var relation = Relation()
            relation.recordID = record.recordID
            relation.FirstName = record["FirstName"] as! String
            relation.Initials = record["Initials"] as! String
            relation.LastName = record["LastName"] as! String
            relation.MiddleName = record["MiddleName"] as! String
            relation.RelationId = record["RelationId"] as! Int
            
            newRelations.append(relation)
        }

        operation.queryCompletionBlock = { (cursor, error) in
            DispatchQueue.main.async {
                if let error = error {
                    completion(.failure(error))
                } else {
                    completion(.success(newRelations))
                    print("data")
                }
            }
        }
        database.add(operation)
    }

我在互联网上找不到任何东西。希望有人可以帮助我。

【问题讨论】:

  • 你的 icloud containerIdentifier 是什么?它在应用程序功能中设置(启用 iCloud)。 cocoacasts.com/a-primer-on-cloudkit-containers-and-databases
  • “我得到这个错误” 如果有人说同样的话,你说什么?在哪里!?在哪一行?
  • @MarekH 感谢您的回复。该应用程序在正确的 CloudKit 容器上启用。你发的链接我一定会看的,我觉得里面有很多有用的信息。对于问题所在,您可能还有其他想法吗?
  • @ElTomato je hebt helemaal gelijk。 Op lijn 12 是默认设置:'static let database = CKContainer.default().publicCloudDatabase'

标签: ios swift xcode macos swiftui


【解决方案1】:

因为我忘记了一些东西,这里是一些更多的信息:

代码位于第 12 行: ''' 静态让数据库 = CKContainer.default().publicCloudDatabase'''

很遗憾,我没有进一步了解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多