CloudKit从OSX中的记录ID获取实际对象

时间:2016-08-17 12:28:00

标签: macos cloudkit cksubscription cknotification

我正在尝试使用CKSubscription订阅更改。我正在关注Apple的文档,这些文档似乎非常笼统和不完整。 Link to Apple Doc

我已经明确了通过didReceiveRemoteNotification中的AppDelegate方法将记录ID发送到我的应用程序,并且我已经获得了我的记录ID:使用此代码:

func application(application: NSApplication, didReceiveRemoteNotification userInfo: [String : AnyObject]) {
        let cknNotification = CKNotification(fromRemoteNotificationDictionary: userInfo as! [String:NSObject])

        if cknNotification.notificationType == .Query,
            let queryNotification = cknNotification as? CKQueryNotification {
            let recordId = queryNotification.recordID
            print(recordId)
        }

如何将CKNotification转换为我在Cloudkit中存储的实际对象?我是否需要执行另一次获取,或者是我需要施放的CKNotification中包含的数据。

1 个答案:

答案 0 :(得分:0)

看起来我已经解决了。

通知只会让您知道它们已更改。您需要完成工作以提取新记录并更新它们。 (真的很有意义)

privateCloudDatabase()。fetchRecordWithID(recordId!,completionHandler:{(recordfetched,error)in

            //Check the Record Type if multiple.. I only have one type.
   let myRecordType = recordfetched?.recordType
            let myObject = mySuperObject(record: recordfetched!)
            print("done")
        })

//我应该添加更多可选检查 - 但上面只是说明了解决方案以及获取的简单程度。