区分记录类型和 iCloud 发送的通知

Posted

技术标签:

【中文标题】区分记录类型和 iCloud 发送的通知【英文标题】:Distinguishing record type from notification sent by iCloud 【发布时间】:2016-01-20 04:10:49 【问题描述】:

我在区分创建、更新或删除的记录类型时遇到问题。

我有两个CKSubscriptions 用于不同类型的记录;狗和猫。

通过查看[String : AnyObject],无法区分是发生在狗身上还是猫身上。

这样的东西会作为远程通知发送到应用程序。

["ck": 
    ce = 2;
    cid = "iCloud.com.xxx.yyy";
    nid = "xxx-xxx-xxx";
    qry =     
        dbs = 2; // I don't know what this is, but it doesn't change
        fo = 3; // This indicates a deletion. 
        rid = "SomeManuallySetID";
        sid = "117DCFC3-F723-49F7-9F9D-A3D7463671F2";
        zid = "_defaultZone";
        zoid = "_defaultOwner";
    ;
]

有没有人能够在不再次查询 iCloud 的情况下这样做?

【问题讨论】:

【参考方案1】:

您首先从NSNotification 获得CKNotification。然后在确定它是查询通知后,将其转换为CKQueryNotification。从那里你可以得到CKRecordID。使用它,您可以从CKDatabase 获取CKRecord。拥有CKRecord 后,您可以使用recordType 属性。

【讨论】:

非常感谢!我掌握的大部分知识都是基于博客文章,他们没有提到任何关于 CKQueryNotification 的内容。谢谢,我会通过官方文档研究这个类。哦,不过你得自己去拿。 您可以通过notificationInfo指定记录的字段以包含在推送通知的有效负载数据中。这可能有助于您区分,具体取决于您的具体情况。

以上是关于区分记录类型和 iCloud 发送的通知的主要内容,如果未能解决你的问题,请参考以下文章

如何通知另一台设备 CloudKit 记录已更新?

Core Data + iCloud,更改通知插入和删除关系中的对象但不更新关系中现有实体的属性

iCloud 和 CoreData:更改为 iCloud Store 时的通知(使用现有 iCloud 数据首次启动)

iCloud 同步通知 NSPersistentStoreDidImportUbiquitousContentChangesNotification 和核心数据的问题

在 Apple Watch 上接收来自 iCloud 的推送通知

我的 iOS 7 应用程序中没有任何 iCloud 通知触发