создательUserRecordID.recordName содержит __defaultOwner__ вместо UUID, отображаемого на панели инструментов.

Скачивая CKRecord из CloudKit и рисуя создателя recordName, я вижу это:

(lldb) po record.creatorUserRecordID.recordName
__defaultOwner__

но Dashboard показывает реальную ценность.

введите здесь описание изображения

Почему разница?!

Надеюсь, мне не придется качать только из-за этого авторизованный пользователь сначала?!


person János    schedule 28.05.2015    source источник


Ответы (2)


__defaultOwner__ означает, что он принадлежит текущей учетной записи iCloud. Таким образом, вы можете проверить это и отобразить Меня или имя человека, если оно у вас есть. Если вам нужно узнать recordID вошедшего в систему пользователя, вы можете использовать асинхронный метод: fetchUserRecordIDWithCompletionHandler.

person malhal    schedule 11.12.2015
comment
Кроме того, это можно найти в переменной: CKCurrentUserDefaultName: developer.apple.com/ документация/облачный комплект/ - person Ezekiel Elin; 30.06.2017
comment
CKCurrentUserDefaultName поддерживается только в iOS 10.0+. - person user1105951; 03.07.2018

это ошибка

отредактируйте это:

- (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);
                }];
            }
        }
    }];
}
person Jay    schedule 28.05.2015
comment
это не ошибка. проверьте малхал ответ. - person user1105951; 03.07.2018