无法使用类型 '(String?!)' 的参数列表调用'append'



>我正在尝试将 Parse 中的用户名添加到数组中以在 UITableView 中显示它们,但是当我将用户名附加到我的数组时出现错误。

我得到的错误是:无法使用类型为"(字符串?!

我做错了什么?

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)
    }
}

我解决了我的问题。我将数组声明为空数组,并使用以下代码解开可选数组:

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 是可选的,你不能在 Swift 中将可选附加到 String 数组中。这是因为 optional 可以nil ,而 Swift 中的字符串数组只接受字符串。

您需要强制解开可选包,或者使用 if-let 语法添加它(如果存在)。

强制展开

self.usernames.append(fetchedUser.username! as String)

或者如果让

if let name = fetchedUser.username as? String {
  self.usernames.append(name)
}

另外,正如NRKirby在关于您的问题的评论中提到的,您可能希望以不同的方式看待初始化usernames数组。目前,第一个元素是一个空字符串。

最新更新