我只是想用在雨燕.map
關閉和偶然發現了這一點:雨燕VS明確解開類型
//var oldUsers = [User]() -> containting >=1 Users at runtime
//var invitedUsers = [String]() -> gets filled with userIds during runtime by the user clicking on people to invite
let oldIds = self.oldUsers.map {$0.userId} //userId is of Type String!
println(oldIds) //-> returns Array<String!>
var allUsers = self.invitedUsers + oldIds
最後一行不會編譯,因爲它說你不能結合
[(String)] and Array<String!>
快速通過在地圖上進行演員表來修復它
let oldIds = self.oldUsers.map {$0.userId as String}
不應該這樣嗎?我會理解,如果我需要首先打開一個可選的[String?]數組。爲什麼需要強制轉換,因爲object屬性已經是一個明確展開的String類型了?
我建議使用'flatMap'而不是'map'將是最好的選擇,避免了將'String!'強制轉換爲'String'的危險,並確保該數組可以安全地用於其中。當然, ,如果'nil'' userId'是一個編程錯誤,那麼堅持使用cast - 你想讓它崩潰。 – Stuart
我建議不要使用'String!'或'[String!]'。唯一的原因是,如果你使用了一些可怕的Objective-C庫,它設法更新到類型數組,但錯過了關於可空性註釋的部分。 – nhgrif