我正在尝试获取与当前用户关联的所有订阅。 According to the documentation,要调用的函数是:
CKFetchSubscriptionsOperation.fetchAllSubscriptionsOperation()
我用这种方式调用函数:
let op = CKFetchSubscriptionsOperation.fetchAllSubscriptionsOperation()
op.fetchSubscriptionCompletionBlock = { (subs, error) in
print("*** fetched subs: \(subs)")
}
let q = OperationQueue()
q.addOperation(op)
但是,subs
参数返回一个空字典(Optional([:])
)。 error
参数是nil
。我刚开始使用NSOperation
,所以我想知道我做错了什么。
(作为确认要检索订阅的确认,我单独调用容器的publicDatabase.fetchAllSubscriptions()
函数。这个函数按预期返回当前用户的订阅。不幸的是,它还返回与模式中的每个其他用户关联的订阅。)
答案 0 :(得分:4)
您的示例代码未在CKFetchSubscriptionsOperation
上设置容器和数据库。由于您要将操作添加到自己的OperationQueue中,因此需要设置它们。
直接在操作上设置容器和数据库。
let op = CKFetchSubscriptionsOperation.fetchAllSubscriptionsOperation()
op.fetchSubscriptionCompletionBlock = { (subs, error) in
print("*** fetched subs: \(subs)")
}
op.container = CKContainer.default()
op.database = CKContainer.default().publicCloudDatabase
let q = OperationQueue()
q.addOperation(op)
将操作添加到所需数据库的队列(为您设置这些队列)。
let op = CKFetchSubscriptionsOperation.fetchAllSubscriptionsOperation()
op.fetchSubscriptionCompletionBlock = { (subs, error) in
print("*** fetched subs: \(subs)")
}
CKContainer.default().publicCloudDatabase.add(op)