gpt4 book ai didi

ios - 无法在 Firebase 中保留 'posts' 的 'users' 引用

转载 作者:行者123 更新时间:2023-11-30 13:27:15 25 4
gpt4 key购买 nike

我正在创建一个社交应用程序,它的一个共同点是保留用户发布的帖子的标签。我使用 Firebase 作为后端,这是我的架构

SocialApp
posts
-KGsBG5TPYBtzRivZnbf

users
facebook:10154108240254134
cachedProfile
displayName: "Karthik Kannan"
imageURL: "https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100..."
posts
-KGsBG5TPYBtzRivZnbf: true
provider: "facebook"

当我继续从一台设备(或模拟器)添加帖子时,这会按计划工作,但是当我从设备中删除应用程序并重新安装它时,用户字典中的帖子关系就会消失。我希望它能够跨设备持续存在并保持关系完整,这样如果用户决定使用另一个 iDevice 登录他的帖子就不会被孤立。
以下是我为向 Firebase 添加帖子而编写的代码以及我当前如何跟踪用户。

func postToFirebase(imgUrl: String) {
var gift: Dictionary<String, AnyObject> = [
"giftName": giftName.text!,
"giftDescription":giftDescription.text!,
"giftAvailableAt": giftAvailableAt.text!,
"giftPrice": Int(giftPrice.text!)!,
"username": NSUserDefaults.standardUserDefaults().valueForKey("uid")!,
"giftImage":imgUrl,
]

let firebasePost = DataService.ds.REF_POSTS.childByAutoId()
firebasePost.setValue(gift)

firebasePost.observeSingleEventOfType(.Value, withBlock: { snapshot in
if let postID = snapshot.key {
DataService.ds.REF_USER_CURRENT.childByAppendingPath("posts").childByAppendingPath(postID).setValue(true)
}

})
}

这就是我设置当前用户的方式:

var REF_USER_CURRENT:Firebase {
if let uid = NSUserDefaults.standardUserDefaults().valueForKey("uid") as? String {

let user = Firebase(url:"\(BASE_URL)").childByAppendingPath("users").childByAppendingPath(did){
return user!
} else {
return Firebase()
}
}

func createFirebaseUser(uid:String, user:Dictionary<String, AnyObject>) {

REF_USERS.childByAppendingPath(uid).setValue(user)
}

这是我的登录 Controller 中的代码。

       NSUserDefaults.standardUserDefaults().setValue(authData.uid, forKey: "uid")

let user = ["provider":authData.provider!,"displayName":authData.providerData["displayName"]!,"cachedProfile":authData.providerData["cachedUserProfile"]!, "imageURL":authData.providerData["profileImageURL"]!]

DataService.ds.createFirebaseUser(authData.uid, user: user)

self.performSegueWithIdentifier("loggedIn", sender: nil)

这就是我编写的所有代码。我怀疑这与 NSUserDefaults 有关。这位初学者将不胜感激任何帮助。

最佳答案

检查您的代码。我发现这里有一个错字:

var REF_USER_CURRENT:Firebase { if let uid = NSUserDefaults.standardUserDefaults().valueForKey("uid") as? String {

    let user = Firebase(url:"\(BASE_URL)").childByAppendingPath("users").childByAppendingPath(did){
return user!
} else {
return Firebase()
}
}

而不是“...childByAppendingPath(did)”您可能想将“did”更改为“uid”

除此之外,我还没有测试过您的其余代码。

看来您已经观看了 Mark Price 制作此应用程序的类(class)。我也是:)

关于ios - 无法在 Firebase 中保留 'posts' 的 'users' 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37022646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com