Я проделал следующую функцию, где пользователи могут следовать друг за другом. Проблема в том, что он не используется так, как должен. В тот момент, когда пользователь пишет пост он будет сохранен в моей базе данных Firebase по этой ссылке:Показать сообщения от пользователей, которые вы используете - swift
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)
}
}
И тогда я называю startObservingDB() в viewDidLoad.
Если вы хотите, чтобы увидеть мою 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
и т.д. и т. д.
Мой вопрос: Как изменить, что показывать только сообщения от людей, которых я придерживаюсь?
Извините за длинный пост
Я не совсем уверен, что понимаю; вы говорите, что всякий раз, когда пользователь делает сообщение, он должен проверить, кто следит за этим пользователем, а затем добавить это сообщение всем пользователям, которые следуют за этим пользователем?:-) Невозможно это сделать; Когда пользователь отправляет что-то в свой профиль, то все текущие пользователи-последователи попадают в массив и проверяют наличие сообщений? У меня действительно нет подсказки, но добавление пользовательских сообщений mulitple места займет некоторое пространство - правильно? –
В принципе позволяет пользователю получить доступ к другому профилю пользователей, это не очень хорошая идея. Читайте, что я предложил в PS. Кроме того, вместо true в * postsToShowToUser * вы можете указать идентификатор пользователя пользователя проводки. После того, как у вас есть postID и userID сообщения. Теперь вы можете перемещаться по сообщениям postID в разделе * post * базы данных, без предоставления доступа пользователю к учетной записи других пользователей. Я соответствующим образом обновил свой ответ. – Dravidian
Что касается добавления почтового идентификатора в каждом повторителе, ваш пользователь может просто сделать сообщение, а затем вам придется прокручивать все users_Follwers, а затем через свой postID, откуда вы сможете получить postDetails из всех последних сообщений. Это неплохая идея, но вы дадите разрешение случайному последователю, чтобы получить доступ к вашим личным данным других пользователей, а также потребуется много времени, чтобы загрузить все детали и выполнить цикл, пользователи вашего приложения, возможно, не захотят так долго ждать прочитайте сообщение, сделанное их друзьями ...! – Dravidian