Неустранимая ошибка: неожиданно обнаружено значение nil при разворачивании необязательного значения при запросе из CloudKit

Я пытаюсь получить имя текущего пользователя из CloudKit, используя следующий код:

func getUserFirstName() -> String{

    var firstNameFromFunction: String?
    var currentuserID : CKRecordID? 



    container.fetchUserRecordID(completionHandler: {
        userID, error in
        if ((error == nil)) {
            self.currentuserID = userID!

        }
    })

    container.discoverUserInfo(withUserRecordID: currentuserID!, completionHandler: {userInfo, error in

       let firstNameFromFunction = (userInfo!.displayContact?.givenName)!
    })
    return firstNameFromFunction!
}

Однако при выполнении currentUserID равен нулю, что создает фатальную ошибку. Кто-нибудь знает, почему currentUserID равен нулю?


person user4174219    schedule 12.07.2017    source источник


Ответы (2)


Ваше приложение должно успешно requestApplicationPermission для userDiscoverability, прежде чем сможет fetchUserRecordID.

person San Lewy    schedule 13.07.2017
comment
Спасибо, как мне это сделать? - person user4174219; 13.07.2017

Код для проверки того, является ли значение нулевым, выглядит следующим образом. Возможно, Сан прав со своим ответом; Я предполагаю, что это также может быть нулевым, если пользователь не вошел в свой AppleID на устройстве, на котором он запущен.

if self.currentuserID = userID {
// do something with self.currentuserID (the unwrapped value of userID)
} else {
// do something now that we know userID is nil
}
person user3069232    schedule 14.07.2017