"Неустранимая ошибка: неожиданно найден ноль при развертывании необязательного значения" при запросе из 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 равен nil, что создает фатальную ошибку. Кто-нибудь знает, почему currentUserID равен нулю?

2 ответа

Ваше приложение должно успешно запросить ApplicationPermission для userDiscoverability, прежде чем оно сможет извлечь UserRecordID.

Код для проверки значения nil выглядит следующим образом. Сан может быть прав с его ответом; Я предполагаю, что это может быть также ноль, если пользователь не вошел в свой 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
}
Другие вопросы по тегам