如何将该对象数组转换为字符串数组?我正在读取Firebase集合中的记录。
firebaseDB.collection("message").document(key).collection("messages").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
}
else {
self.driverArr.removeAll()
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
let msgdata = document.data() as! [String:Any]
var msgObj = Message()
if let name = msgdata["name"] as? String {
msgObj.name = name
}
self.driverArr.append(msgObj)
}
if self.driverArr.count < 1 {
print("No Drivers")
}
else{
print("*** Driver Names array ***")
print(self.driverArr)
}
}
}
此数组的当前输出为:
[MainApp.Message(name:Optional(“ Oliver”),userId:Optional(“”),msg: Optional(“”),creatAt:Optional(0),纬度:Optional(“”),经度: Optional(“”)),MainApp.Message(名称:Optional(“ Bluesona”),userId: 可选(“”),信息:可选(“”),creatAt:可选(0),纬度: Optional(“”),经度:Optional(“”))),MainApp.Message(name: Optional(“ Oliver”),userId:Optional(“”),msg:Optional(“”),creatAt: 可选(0),纬度:可选(“”),经度:可选(“”)))
我希望仅输出一个包含名称为["Oliver", "Bluesona"...]
的字符串数组的数组
答案 0 :(得分:1)
您可以使用compactMap
获取数组中的所有有效名称。
print( driverArr.compactMap({$0.name}) )