我基本上是在搞乱 CloudKit。我有 2 个问题需要帮助/教育。
(1) 当我尝试在关闭 WiFi 的模拟器中运行以下代码(模拟网络不可用)时,我希望它会抛出网络不可用错误。但是,cloudKit 不会抛出任何错误,该函数也不会执行任何操作,即不会执行 modifyRecordZonesCompletionBlock 内的任何一个打印语句
self.container = CKContainer.default()
self.privateDB = self.container.privateCloudDatabase
let createZoneGroup = DispatchGroup()
createZoneGroup.enter()
let createZoneOperation = CKModifyRecordZonesOperation(recordZonesToSave: [customZone], recordZoneIDsToDelete: [])
createZoneOperation.modifyRecordZonesCompletionBlock = { (saved, deleted, error) in
if let theerror = error {
// Need to handle error
print("Create Custom zone error \(theerror)")
} else {
print("Custom Zone created")
}
createZoneGroup.leave()
}
createZoneOperation.qualityOfService = .background
self.privateDB.add(createZoneOperation)
但是,当我将 to 更改createZoneOperation.qualityOfService
为default
oruserInitiated
时,它会抛出一个错误(如下),这是预期的行为。为什么是这样?它只是模拟器异常还是抛出云套件错误与服务的操作质量有关,为什么?我在 cloudkit API 参考中找不到有关此行为的任何信息。
Create Custom zone error <CKError 0x60800005a2e0: "Partial Failure" (2/1011); "Failed to modify some record zones"; partial errors: {
Main:__defaultOwner__ = <CKError 0x610000242910: "Network Unavailable" (3/NSURLErrorDomain:-1009); "The Internet connection appears to be offline.">
}>
(2) 另外,我希望它会抛出一个直接Network Unavailable
错误,而不是一个Partial Failure
包含错误的失败错误Network Unavailable
。这是预期的行为吗?它是否总是抛出Partial Failure
错误,然后必须打开包装才能找到包含的错误消息?文档似乎非常缺乏任何解释,除非我没有找到正确的位置。
任何帮助将不胜感激。谢谢你。