【发布时间】: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