Я пытаюсь сделать окончание экрана публикации.Я получаю заголовок, информацию об изображении, описание с этой страницы от пользователя, и я пытаюсь получить имя пользователя пользователя из базы данных 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.