2015-08-26 1 views
0

Я пытаюсь найти и использовать один CKRecord, который соответствует текущему входу пользователя из iCloud во время моего приложения.Swift Cloudkit извлекает текущую информацию пользователя для использования во всем приложении

Я извлекаю пользователя и сохраняю его из AppDelegate (по-видимому, излишне сложным образом) и затем извлекаю запись из AppDelegate, когда мне это нужно в приложении.

Однако для поиска пользователя требуется больше времени, чем приложение загружает, и поэтому, когда контроллер корневого представления загружен, текстовая метка, которую я установил как имя пользователя, пуста, потому что пользователь не имеет но были получены. Это приводит к сбою приложения из-за «фатальной ошибки: неожиданно обнаружено нуль при развертывании необязательного значения», а значение nil - это запись пользователя.

Должен быть более простой и быстрый способ получить запись текущего пользователя из CloudKit. Любая помощь будет принята с благодарностью! :)

ответ

0

Запрос CloudKit будет асинхронным вызовом. Вы никогда не будете уверены, в какой момент будет сделан обратный вызов с данными. Поэтому вы не должны зависеть от данных, которые должны быть там. Если у вас есть какой-либо код, который зависит от этих данных, тогда вызовите этот код из обратного вызова CloudKit. Если вам нужно получить доступ к этим данным из другого места, убедитесь, что вы добавили нулевую проверку, прежде чем обращаться к ней.