我想實作一個朋友系統。目前我正在添加這樣的朋友:
public func addFriends(emailUser:String, emailFriend:String, completion: @escaping (Bool) -> Void) {
let db = Firestore.firestore()
if emailFriend == "" {
print ("Failed to add friend")
completion(false)
}else {
getUserData(email: emailFriend, isForFriend: true) { success in
if success {
db.collection("users").document(emailUser).setData([
"friends" : [[self.userDataOfMyFriends!.email]:[self.userDataOfMyFriends!.uid]]
], merge: true)
completion(true)
}else{
print ("Failed to add friend")
completion(false)
}
}
}
}
用戶的 Firebase 資料結構如下所示:
email
- "[email protected]"
friends
- 0
- "[email protected]": "AbCdeF1234567" // email:UID
uid
- "AbCdeF1234567" //current users UID
我正在加載個人資料資料,包括當前用戶的朋友,如下所示:
public func getUserData(email:String, isForFriend:Bool, completion: @escaping (Bool) -> Void) {
let db = Firestore.firestore()
let docRef = db.collection("users").document(email)
print (email)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let userEmail = document.get("email") as? String
let userUID = document.get("uid") as? String
let userFriends = document.get("friends") as? [[String:String]] // Here might be the problem
if isForFriend {
self.userDataOfMyFriends = UserData(email: userEmail, uid: userUID, friends: userFriends)
} else {
self.userData = UserData(email: userEmail, uid: userUID, friends: userFriends)
}
print("userdata geladen")
print (self.userData)
completion(true)
} else {
completion(false)
}
}
}
我的 UserDataModel 看起來像這樣:
public struct UserData {
var email:String?
var uid:String?
var friends:[[String:String]]?
}
但結果總是零。如何在我的 UserDataModel 中從 Firebase 獲取“地圖”資料?
uj5u.com熱心網友回復:
所以你需要
let userFriends = document.get("friends") as? [String:String]
因為friends是字典而不是陣列,因此
var friends:[String:String]?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427055.html
