обновить значения из структуры в Firestore в Swift - PullRequest
0 голосов
/ 25 октября 2018

Я хочу обновить значения из структуры. Это мой структурный код.

struct Usersdata {
let uid:String?
let facebook:String?
let google : String?
let name : String?
let age : Int?
let birthday : String?
let smokeage  : Int?
let smokeaddiction : Int?
let smokebrand  : String?
let gold : Int?
let score : Int?
let fish : Int?
let shit : Int?
let userimage  : String?
init(aDoc: DocumentSnapshot) {
    self.uid = aDoc.get("uid") as? String ?? ""
    self.facebook = aDoc.get("facebook") as? String ?? ""
    self.google = aDoc.get("google") as? String ?? ""
    self.name = aDoc.get("name") as? String ?? ""
    self.age = aDoc.get("age") as? Int ?? 0
    self.birthday = aDoc.get("birthday") as? String ?? ""
    self.smokeage = aDoc.get("smokeage") as? Int ?? 0
    self.smokeaddiction = aDoc.get("smokeaddiction") as? Int ?? 0
    self.smokebrand = aDoc.get("smokebrand") as? String ?? ""
    self.gold = aDoc.get("gold") as? Int ?? 0
    self.score = aDoc.get("score") as? Int ?? 0
    self.fish = aDoc.get("fish") as? Int ?? 0
    self.shit = aDoc.get("shit") as? Int ?? 0
    self.userimage = aDoc.get("userimage") as? String ?? ""
    }
}

Я получил значения из функции запроса следующим образом:

func queryAUser() {
    let docRef = self.db.collection("Users").document(userID).collection("userdata").document("userdata")
    docRef.getDocument { (document, error) in
        if let document = document, document.exists {
            let aUser = Usersdata(aDoc: document)
            self.local_userdata = aUser
        } else {
            print("Document does not exist")
        }
    }
}

Я могу использовать local_userdata для получениямои значения, но я хочу обновить новые значения в Firestore сейчас.

Существуют ли решения для обновления значений из Usersdata.struct?

1 Ответ

0 голосов
/ 26 октября 2018

Позвольте мне сделать это.

Предполагая, что вы прочитали пользователя, используя код в вашем вопросе, и пользователь хранится в self.local_userdata

Вот пример функции для обновленияимя пользователя с указанным идентификатором пользователя и новым именем

func updateUserName(withUid: String, toNewName: String) {
    self.db.collection("users").document(withUid).setData( ["name": toNewName], merge: true)
}

Чтобы использовать это, прочитайте self.local_userdata.uid, чтобы мы знали, какого пользователя мы хотим изменить и передать в этот идентификатор, и какое новое имя должноbe.

Вы могли бы улучшить это, чтобы обновить любое поле для определенного пользователя с помощью этого

func updateUserField(withUid: String, andField: String, toNewValue: String) {
    self.db.collection("users").document(withUid).setData( [andField: toNewValue], merge: true)
}

Конечно, если вы изменяете поля, вам также следует соответствующим образом обновить структуру

self.local_userdata.name = "некоторое имя"

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