将对象数组转换为字符串数组

时间:2018-10-05 10:04:02

标签: ios arrays swift

如何将该对象数组转换为字符串数组?我正在读取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"...]的字符串数组的数组

1 个答案:

答案 0 :(得分:1)

您可以使用compactMap获取数组中的所有有效名称。

print( driverArr.compactMap({$0.name}) )