【发布时间】:2017-04-02 13:44:30
【问题描述】:
我做了一个关注功能,用户可以互相关注。问题是它没有按应有的方式使用。在用户写帖子的那一刻,它会保存在我的 Firebase 数据库中,参考如下:
FIRDatabase.database().reference().child("feed-items").childByAutoId()
提要项目是所有帖子所在的位置。但是我现在正在更改它,因此当用户发布某些内容时,它将被保存在这里:
FIRDatabase.database().reference().child("Users").child(UserID).child("Posts").childByAutoId()
我这样做是因为它以某种方式告诉我,在我的应用程序源中仅显示您关注的人的帖子会更容易。
目前,我正在获取我的提要(来自提要项)的所有帖子,如下所示:
func startObersvingDB() {
FIRDatabase.database().reference().child("feed-items").observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in
var newUpdates = [Sweet]()
for update in snapshot.children {
let updateObject = Sweet(snapshot: update as! FIRDataSnapshot)
newUpdates.append(updateObject)
}
self.updates = newUpdates.reverse()
self.tableView.reloadData()
}) { (error: NSError) in
print(error.description)
}
}
然后我在 viewDidLoad 中调用 startObservingDB()。
如果你想在这里查看我的 Sweet 结构:
import Foundation
import FirebaseDatabase
import FirebaseAuth
import UIKit
struct Sweet {
let key: String!
let content: String!
let addedByUser: String!
let profilePhoto: String!
let itemRef: FIRDatabaseReference?
init (content: String, addedByUser: String, profilePhoto: String!, key: String = "") {
self.key = key
self.content = content
self.addedByUser = addedByUser
self.profilePhoto = profilePhoto
self.itemRef = nil
}
init (snapshot: FIRDataSnapshot) {
key = snapshot.key
itemRef = snapshot.ref
path = key
if let theFeedContent = snapshot.value!["content"] as? String {
content = theFeedContent
} else {
content = ""
}
if let feedUser = snapshot.value!["addedByUser"] as? String {
addedByUser = feedUser
} else {
addedByUser = ""
}
if let feedPhoto = snapshot.value!["profilePhoto"] as? String! {
profilePhoto = feedPhoto
} else {
profilePhoto = ""
}
}
func toAnyObject() -> AnyObject {
return ["content":content, "addedByUser":addedByUser, "profilePhoto":profilePhoto!]
}
}
在我的 TableViewController 中,我使用它在自定义单元格中显示名称等:
var update = updates[indexPath.row]
cell.nameLabel.text = update.addedByUser
等等。等等
我的问题是: 如何将其更改为仅显示我关注的人的帖子?
抱歉,帖子太长了
【问题讨论】:
标签: ios swift uitableview firebase firebase-realtime-database