cloudkit: как получить доступ к основным атрибутам пользователя?

Я пытаюсь сделать приложение, в котором у каждого пользователя будет личный аватар, никнейм и так далее.

Я не знаю, как получить доступ к учетной записи пользователя в cloudkit.

Моим решением было бы получить AppleID пользователя, запросить Cloudkit и изменить атрибут пользователя... Но я думаю, должен быть лучший способ сделать это. Разве это не что-то вроде NSUserDefault, но для облачного набора?


person Quentin Malgaud    schedule 10.02.2015    source источник


Ответы (1)


Сначала вам нужно выяснить, что такое текущий идентификатор пользователя, вошедшего в систему. Это можно сделать, выполнив в контейнере метод fetchUserRecordIDWithCompletionHandler. Затем вы можете получить дополнительную информацию (в настоящее время только имя и фамилию), выполнив DiscoverUserInfoWithUserRecordID в этом контейнере.

Вы можете расширить таблицу Users дополнительными настраиваемыми полями, но я бы не советовал этого делать. Таблица Users — это специальная системная таблица с некоторыми ограничениями. Лучше было бы создать отдельный RecordType с пользовательскими настройками. Просто добавьте CKReference в таблицу пользователей для быстрого доступа.

Вы также должны знать, что пользователь может выйти и войти с другой учетной записью iCloud во время работы вашего приложения. Вы можете зафиксировать это, выполнив приведенный ниже код сразу после запуска вашего приложения. Конечно, вы должны реализовать свою собственную логику, где вы видите NSLog

    var ubiquityIdentityDidChangeNotificationToken = NSNotificationCenter.defaultCenter().addObserverForName(NSUbiquityIdentityDidChangeNotification, object: nil, queue: nil) { _ in
        NSLog("The user’s iCloud login changed: should refresh all user data.")
    }
person Edwin Vermeer    schedule 11.02.2015
comment
Большое спасибо. Вчера вечером я начал кодировать новую ссылку (по одной на пользователя) для дополнительных атрибутов. Я также обнаружил метод fetchUserRecordIDWithCompletionHandler. Я все еще пытаюсь преобразовать CKRecordID в CKRecordValue или, другими словами, создать ссылку в коде. Но я найду способ, надеюсь. Спасибо за ваш ответ, так как я не думал о возможности смены пользователем учетной записи iCloud. Действительно полезно - person Quentin Malgaud; 11.02.2015
comment
Если вам нужен пример кода, вы можете посмотреть демонстрацию Apple CloudKit Atlas по адресу developer.apple.com/wwdc/resources/sample-code или вы можете взглянуть на этот код CloudKit: github.com/evermeer/EVCloudKitDao - person Edwin Vermeer; 12.02.2015