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

Distinguishing record type from notification sent by iCloud

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

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

[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 的情况下做到这一点?

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