CKQuerySubscription:无法进行订阅

时间:2018-09-05 04:25:22

标签: ios swift cloudkit

我有一个正在使用 CloudKit 的iOS应用。我正在尝试订阅。

import CloudKit

class HomeViewController: UIViewController {
    override func viewDidLoad() {
        registerSubscription()
    }

    func registerSubscription() {
        let cloudContainer = CKContainer(identifier: "iCloud.com.xxx.XXXXX")
        let privateDB = cloudContainer.privateCloudDatabase
        let predicate = NSPredicate(format: "TRUEPREDICATE") // TRUEPREDICATE: all records of the specified type match the predicate
        let subscription = CKQuerySubscription(recordType: "PrivateRecords", predicate: predicate, options: .firesOnRecordCreation)
        privateDB.save(subscription, completionHandler: ({returnRecord, error in
            if let err = error {
                print("Subscription has failed: \(err.localizedDescription)")
            } else {
                print("Subscription set up successfully")
                print("Subscription ID: \(subscription.subscriptionID)")
            }
        }))
    }
}

它会一直出现错误。该错误说明如下。

  

带有零通知的订阅信息:CKQuerySubscription:0x7fd7bfca7ec0; ;查询订阅:recordType = PrivateRecords,谓词= TRUEPREDICATE,subscriptionOptions = 1,subscriptionID = 728863F8-3852-4A12-B5C6-F65EC945207A,zoneID =(null)

我可以基于订阅ID删除订阅。但每次我运行此应用时,它都会给我一个不同的ID。实际上,我使用 macOS 应用程序做了同样的事情。它有一个订阅。此外,大约一周前,我删除了订阅类型,以了解发生了什么。我真的不知道订阅ID是什么。

那么订阅时我做错了什么?谢谢。

enter image description here

1 个答案:

答案 0 :(得分:1)

CKQuerySubscription扩展了CKSubscription。保存订阅之前需要设置的属性之一是notificationInfo。该消息指出此属性为nil,应将其设置为有用的内容。