creatorUserRecordID.recordName содержит "__defaultOwner__" вместо UUID, показанного на информационной панели
Загрузка CKRecord
от CloudKit
и при заговоре создателя recordName
Я вижу это:
(lldb) po record.creatorUserRecordID.recordName
__defaultOwner__
но приборная панель показывает реальную ценность.
Почему разница?!
Я надеюсь, что не нужно загружать только из-за этого вошедшего в систему пользователя в первую очередь?!
2 ответа
"__defaultOwner__" означает, что он принадлежит текущей зарегистрированной учетной записи iCloud. Таким образом, вы можете заменить это на "Я" или имя человека, если оно у вас есть. Если вы хотите узнать идентификатор пользователя, вошедшего в систему, вы можете использовать асинхронный метод 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);
}];
}
}
}];
}