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