как сохранить информацию в классе, который был получен из базы данных Firebase Firestore - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь сделать окончание экрана публикации.Я получаю заголовок, информацию об изображении, описание с этой страницы от пользователя, и я пытаюсь получить имя пользователя пользователя из базы данных Firebase Firestore и сохранить его для публикации класса, чтобы я мог использовать эти переменные в любое время без функции .getdocument.Вот мой код без сохранения их в классе Post:

override func viewDidLoad() {
    super.viewDidLoad()
    self.desctext.layer.borderWidth = 0.25
    self.desctext.layer.borderColor = UIColor.lightGray.cgColor
    self.desctext.layer.cornerRadius = 8

    if desctext.text.count == 0 {
        desctext.text = "    "
    }
    let imageTap = UITapGestureRecognizer(target: self, action: #selector(openimagepicker))
    addfoto.isUserInteractionEnabled = true
    addfoto.addGestureRecognizer(imageTap)

    imagePicker = UIImagePickerController()
    imagePicker.allowsEditing = true
    imagePicker.sourceType = .photoLibrary
    imagePicker.delegate = self



}

@IBAction func done(_ sender: Any) {

   let uuid = UUID().uuidString
   let db = Firestore.firestore()
    var usernamee = ""
    let title = self.titletext.text
    let desc = self.desctext.text
   guard let userid = Auth.auth().currentUser?.uid else {return}
    let data = addfoto.image?.jpegData(compressionQuality: 1)
    let storageRef = Storage.storage().reference().child("user/\(userid)/postpics/\(uuid).jpg")
    storageRef.putData(data!, metadata: nil) { (metadata, error) in
        guard metadata != nil else {
            return
        }
        storageRef.downloadURL { (url, error) in
            guard let downloadURL = url?.absoluteString else {

                return
            }




            db.collection("user").document("\(userid)").getDocument { (document, error) in
                if let document = document, document.exists {

                    let username = document.get("instagram username")
                    let datatosave: [String: Any] = ["title": title as Any,"desc": desc as Any, "downloadurl": downloadURL, "username": username as! String]
                    db.collection("user").document("\(userid)").collection("posts").document("\(uuid)").setData(datatosave)
                    db.collection("posts").document("\(uuid)").setData(datatosave)
                }
            }






            self.dismiss(animated: true, completion: nil)
        }

    }
}
@objc func openimagepicker() {
    self.present(imagePicker, animated: true, completion: nil)
}

@IBAction func cancelbut(_ sender: Any) {
    self.dismiss(animated: true, completion: nil)
}


@IBOutlet weak var titletext: UITextField!
@IBOutlet weak var desctext: UITextView!

}

В основном я хочу научиться сохранять информацию, полученную с помощью функции .getdocument ().Я могу использовать его внутри оператора if, но на самом деле я хочу получить документ и сохранить его в классе Post здесь и впоследствии использовать его в качестве Post.username.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...