2015-04-20 106 views
2

我試圖從一個數組中的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

如何聲明數組,如下所示:'var usernames:[String] = []' – NRKirby

回答

0

PFUser.username是可選的,你不能任意追加到斯威夫特一個String陣列。這是因爲可選項可以是nil,而Swift中的String數組只接受字符串。

您需要強制展開可選項,或者使用if-let語法將其添加(如果存在)。

部隊展開

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

或者,如果,讓

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

加爲NRKirby在你的問題中提到的意見,你可能想看看不同的初始化數組usernames。目前第一個元素是一個空字符串。

2

我解決了我的問題。我聲明陣列爲空數組,並用下列代碼解包可選項:

var usernames = [String]() 

self.usernames.removeAll(keepCapacity: true) 

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