Невозможно вызвать 'append' со списком аргументов типа '(String?!)'
Я пытаюсь добавить имена пользователей из Parse в массив для отображения их в UITableView, но получаю сообщение об ошибке при добавлении имен пользователей в мой массив.
Я получаю ошибку: не могу вызвать 'append' со списком аргументов типа '(String?!)'
Что я делаю неправильно?
var usernames = [""]
func updateUsers() {
var query = PFUser.query()
query!.whereKey("username", notEqualTo: PFUser.currentUser()!.username!)
var fetchedUsers = query!.findObjects()
for fetchedUser in fetchedUsers! {
self.usernames.append(fetchedUser.username)
}
}
2 ответа
Я решил свою проблему. Я объявляю массив как пустой массив и для развертывания необязательного с помощью следующего кода:
var usernames = [String]()
self.usernames.removeAll(keepCapacity: true)
for fetchedUser in fetchedUsers! {
if let username = fetchedUser.username as String! {
self.usernames.append(username)
}
}
PFUser.username
является необязательным, и вы не можете добавить необязательный в String
массив в Swift. Это потому, что необязательный может быть nil
, а массив String в Swift принимает только строки.
Вам нужно либо принудительно развернуть необязательный, либо использовать синтаксис if-let, чтобы добавить его, если он существует.
Force Unwrap
self.usernames.append(fetchedUser.username! as String)
Или если-давай
if let name = fetchedUser.username as? String {
self.usernames.append(name)
}
Кроме того, как упоминает Н.Р.Кирби в комментариях к вашему вопросу, вы можете посмотреть на инициализацию usernames
массив по-разному. На данный момент первый элемент является пустой строкой.