如何正确调用“fetchAllSubscriptionsOperation()”来检索 CloudKit 个订阅?
How to properly call `fetchAllSubscriptionsOperation()` to retrieve CloudKit subscriptions?
我正在尝试获取与当前用户关联的所有订阅。 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
参数 returns 是一个空字典 (Optional([:])
)。 error
参数是 nil
。我刚开始使用 NSOperation
,所以我想知道我是否做错了什么。
(为了确认存在要检索的订阅,我单独调用了容器的 publicDatabase.fetchAllSubscriptions()
函数。这个 returns 是预期的当前用户的订阅。不幸的是,它也 returns与架构中所有其他用户关联的订阅。)
您的示例代码没有在 CKFetchSubscriptionsOperation
上设置容器和数据库。并且由于您正在将操作添加到您自己的 OperationQueue,因此您需要设置这些。
选项#1:
设置容器和数据库直接运行。
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)
选项#2:
将操作添加到所需数据库的队列(为您设置)。
let op = CKFetchSubscriptionsOperation.fetchAllSubscriptionsOperation()
op.fetchSubscriptionCompletionBlock = { (subs, error) in
print("*** fetched subs: \(subs)")
}
CKContainer.default().publicCloudDatabase.add(op)
我正在尝试获取与当前用户关联的所有订阅。 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
参数 returns 是一个空字典 (Optional([:])
)。 error
参数是 nil
。我刚开始使用 NSOperation
,所以我想知道我是否做错了什么。
(为了确认存在要检索的订阅,我单独调用了容器的 publicDatabase.fetchAllSubscriptions()
函数。这个 returns 是预期的当前用户的订阅。不幸的是,它也 returns与架构中所有其他用户关联的订阅。)
您的示例代码没有在 CKFetchSubscriptionsOperation
上设置容器和数据库。并且由于您正在将操作添加到您自己的 OperationQueue,因此您需要设置这些。
选项#1:
设置容器和数据库直接运行。
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)
选项#2:
将操作添加到所需数据库的队列(为您设置)。
let op = CKFetchSubscriptionsOperation.fetchAllSubscriptionsOperation()
op.fetchSubscriptionCompletionBlock = { (subs, error) in
print("*** fetched subs: \(subs)")
}
CKContainer.default().publicCloudDatabase.add(op)