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

时间:2015-04-20 19:30:42

标签: swift parse-platform

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

我得到的错误是:无法使用类型'(String?!)'

的参数列表调用'append'

我做错了什么?

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 个答案:

答案 0 :(得分:2)

我解决了我的问题。我将数组声明为一个空数组,并使用以下代码解包该选项:

var usernames = [String]()

self.usernames.removeAll(keepCapacity: true)

    for fetchedUser in fetchedUsers! {
        if let username = fetchedUser.username as String! {
            self.usernames.append(username)
        }
    }

答案 1 :(得分:0)

PFUser.username是可选的,您无法将可选项附加到Swift中的String数组中。这是因为可选项可以是nil,Swift中的String数组只接受字符串。

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

强行打开

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

或者if-let

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

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