使用Swift在Firestore中发送表单数据

时间:2019-12-12 15:14:35

标签: swift firebase google-cloud-firestore

我在我的应用程序中使用Firestore,我有一个表单,其中有一个图像,名称和包含名称和图像的数组。现在,我希望它将其发送到Firestore DB。我正在尝试这样,

func saveTeamAPI()
{
    let image = teamImage.image
    let data = image!.jpegData(compressionQuality: 1.0)

    // set upload path
    let db = Firestore.firestore()
    var ref: DocumentReference? = nil
    ref = db.collection("Team").addDocument(data: [
        "teamName": teamNameTxt.text!,
        "teamImage": data!,
        "players": playerArray
    ]) { err in
        if let err = err {
            print("Error adding document: \(err)")
        } else {
            print("Document added with ID: \(ref!.documentID)")
        }
    }
}

我对如何在Firestore中发送图像以及一系列名称和图像感到困惑?

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我建议您使用Firebase Storage,因为它是存储图像的有效方法。操作方法如下:1)遍历一系列图像,并将它们一张一张地上传到存储设备。 2)每次成功上传后,获取图片网址并将其附加到名为imagesURLs的数组中。

let storage = Storage.storage()
let storageRef = storage.reference()

var imagesURLs = [String]()

for image in images.enumerated() {

let newImageRef = storageRef.child(/\(image.0)avatar.jpg")

let data = image.jpegData(compressionQuality: 0.0)

_ = newImageRef.putData(data!, metadata: nil) { (metadata, error) in

            guard metadata != nil else {
                print(error as Any)
                return
            }

            newImageRef.downloadURL(completion: { (url, error) in
                guard url != nil else {
                    return
                }

                print("Avatar uploaded: \(url!.absoluteString)")

                imagesURLs.append(url!.absoluteString)
            })
        }
}

获取所有网址后,您可以使用Firestore将其作为“ imageURLs”:imageURLs

发送