creatorUserRecordID.recordName包含“__defaultOwner__”,而不是显示在仪表板中的UUID
从CloudKit
下载CKRecord
,并绘制创build者recordName
,我可以看到:
(lldb) po record.creatorUserRecordID.recordName __defaultOwner__
但仪表板显示出真正的价值。
为什么区别?
我希望我不必仅仅因为这个login的用户而下载?!
“__defaultOwner__”意思是由当前login的iCloud账户拥有的。 所以你可以把它replace成“我”或者这个人的名字。 如果你想找出login用户的recordID,你可以使用asynchronous方法fetchUserRecordIDWithCompletionHandler。
这是一个错误
编辑这个:
- (void)postMoodFeed:(NSString *)moodFeed { CKRecord *moodRecord = [[CKRecord alloc] initWitenter code herehRecordType:@"Mood"]; moodRecord[@"moodFeed"] = moodFeed`enter code here` [[[CKContainer defaultContainer] publicCloudDatabase] saveRecord:moodRecord completionHandler:^(CKRecord *record, NSError *error) { [self queryMyMood]; }]; } - (void)queryMyMood { // currentUserRecordID is fetched from fetchUserRecordIDWithCompletionHandler: of CKContainer NSPredicate *predicate = [NSPredicate predicateWithFormat:@"creatorUserRecordID = %@", currentUserRecordID]; CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Mood" predicate:predicate]; [[[CKContainer defaultContainer] publicCloudDatabase] performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) { if (results) { for (CKRecord *eachRecord in results) { // Following logs are all __defaultOwner__ NSLog(@"%@", eachRecord.creatorUserRecordID.recordName); [[[CKContainer defaultContainer] publicCloudDatabase]fetchRecordWithID:eachRecord.creatorUserRecordID completionHandler:^(CKRecord *record, NSError *error) { // All following logs are "Unknown item" error NSLog(@"%@", error); }]; } } }]; }