我有一個iOS應用程序我正在使用Cloud Kit。基本上發生的是,當CKRecord被刪除時,首先創建CKRecord的人應該會收到通知。爲此,我正在創建訂閱。Cloud Kit訂閱CKRecord創建
一切似乎都是按照它應該的方式工作,除非它看起來像每當你創建一條記錄時,你實際上都訂閱了所有的記錄。那麼創建該記錄的人無關緊要,因爲您會收到通知。我認爲我得到的NSPredicate錯誤,也許有人可以幫忙?這裏是我有相關的代碼:
NSString *attributeName = @"recordID";
NSString *attributeValue = newRecord.recordID.recordName;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ like %@", attributeName, attributeValue];
CKSubscription *subscription = [[CKSubscription alloc] initWithRecordType:@"Photo" predicate:predicate options:CKSubscriptionOptionsFiresOnRecordDeletion];
現在我得到了的recordId與attributeName實際上應該像recordID.recordName,但我想,也和它沒有工作。我仍然得到相同的結果。我不知道這樣做的最佳方式,但基本上我想要的是當該記錄已被刪除時,訂閱僅會觸發CKRecord的創建者。
Note that first I create the
CKRecord
, then upload it to CloudKit. Then in the callback method, I am subscribing and doing the code above.
嗨埃德溫,我只是想你的第一個解決方案,但它看起來像我仍然訂閱的一切再次...我做兩個不同的iTunes/iCloud帳戶在兩個不同的iPhone上的記錄。在每部手機上上傳了一份差異記錄。當兩個人都使用一部電話被刪除時,另一個人收到了兩個通知。我會嘗試你的第二種方法,但我想知道爲什麼第一個不工作? – 2014-12-04 15:08:59
我也試過:NSString * attributeName = @「recordID」; CKRecordID * attributeValue = newRecord.recordID; NSPredicate * predicate = [NSPredicate predicateWithFormat:@「%K like%@」,attributeName,attributeValue];它不起作用 – 2014-12-04 15:16:47
我還注意到,在CloudKit Dashboard上,當我訂閱類型時,我只能看到一個帶有RecordType:Photo,Trigger:Remove,Criteria :(空白)......我認爲會有訂閱對於那裏創建的每個記錄,recordID的條件必須是一些長字符串? – 2014-12-04 15:21:08