如何设置CKError的partialErrorsByItemID的值进行测试?

How to set the value of partialErrorsByItemID on CKError for testing?

我想测试我对 class 处理 CloudKit 操作的错误处理。我希望能够构建一个带有特定部分错误的 CKError,以便我可以将其传递到被测操作的完成块中。

我可以使用 .partialError 代码初始化 CKError,但是由于 partialErrorsByItemID 字典是只获取的,我无法设置部分错误。

let error = CKError(.partialError)
error.partialErrorsByItemID = ["TestItemID": CKError(.zoneNotFound)] // => Cannot assign to property: 'partialErrorsByItemID' is a get-only property

有没有办法控制partialErrorsByItemID的值?

您可以通过在 userInfo 字典中提供相关的 key/value 对并使用 init(_:userInfo:) 初始值设定项来分配 partialErrorsByItemID 的值:

let error = CKError(.partialFailure, userInfo: [
    CKPartialErrorsByItemIDKey: ["TestItemID": CKError(.zoneNotFound)]
])