我有一个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