이전에 테이블 뷰에서 선택한 사용자의 게시물을 검색하는 데 문제가 있습니다. 이름, 프로필 사진 등의 사용자 정보를 검색 할 수 있지만 게시물을 가져 오는 데 어려움이 있습니다. 지금은 코드가 아무것도 반환하지 않습니다. 아래 코드를 게시했습니다. 문제가있는 곳은 이며 여기서 나는 loadUserPosts()
함수를 호출합니다. 어떤 도움이라도 미리 감사드립니다.테이블 뷰에서 선택한 사용자의 게시물을 검색하는 방법
tableview controller
@IBOutlet weak var searchTableView: UITableView!
var profiles = [user]()
var ref: FIRDatabaseReference!
override func viewdidload(){
ref = FIRDatabase.database().reference()
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "guestSegue", sender: self)
self.searchTableView.deselectRow(at: indexPath as IndexPath, animated: true)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "guestSegue" {
if let indexpath = searchTableView.indexPathForSelectedRow {
let tabBarController = segue.destination as! UITabBarController
let guestVC = tabBarController.viewControllers![0] as! guestProfileViewController
_ = tabBarController.viewControllers![1] as! guestPhotoViewController
_ = tabBarController.viewControllers![2] as! guestVideoViewController
guestVC.ref = profiles[indexpath.row].ref
print(indexpath)
}
}
}
guestPhotoViewController - 나는 중포 기지
class guestPhotoViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var backgroundProfileImage: UIImageView!
@IBOutlet weak var profileImage: roundImage!
@IBOutlet weak var fullNameLabel: UILabel!
@IBOutlet weak var postCell: UITableViewCell!
@IBOutlet weak var postTableView: UITableView!
var ref: FIRDatabaseReference!
var posts = [Post]()
override func viewDidLoad() {
super.viewDidLoad()
loadUserPosts()
ref = FIRDatabase.database().reference()
}
func loadUserPosts(){
if let ref = ref {
let postsRef = ref.child("post")
postsRef.observe(.value, with: { (snapshot) in
for post in snapshot.children {
let post = Post(snapshot: post as! FIRDataSnapshot)
self.posts.append(post)
print(post)
self.postTableView.reloadData()
}
})
}
}
게시물의 배열에서
class Post{
var profilePic: String!
var fullName: String!
var postImage: String!
var postCaption: String!
var date: NSNumber!
init(profilePic: String, fullName:String, postImage:String, postCaption: String, date:NSNumber){
self.profilePic = profilePic
self.fullName = fullName
self.postImage = postImage
self.postCaption = postCaption
self.date = date
}
init(snapshot:FIRDataSnapshot) {
self.profilePic = (snapshot.value! as! NSDictionary)["profilePic"] as! String!
self.date = (snapshot.value! as! NSDictionary)["dateOfPost"] as! NSNumber!
self.fullName = (snapshot.value! as! NSDictionary)["fullName"] as! String!
self.postImage = (snapshot.value! as! NSDictionary)["postedPic"] as! String!
self.postCaption = (snapshot.value! as! NSDictionary)["postCaption"] as! String!
}
감사에서
tableViewVC
. 내가 실수로 loadUserPost를 호출하기 전에 참조를 변경 했으므로 이제는 선택한 사용자의 게시물뿐만 아니라 모든 사용자의 게시물을로드하므로 문제가 발생합니다. 이전 tableview에서 선택한 사용자의 게시물 만 호출하는 방식으로 코딩하는 방법을 모르겠습니다. 저 좀 도와 주 시겠어요? 나는 다른 정보를 검색하기 위해 유사한 호출 메소드를 사용했으며 작동했다. 임 세상은 코딩에 익숙하지 않으므로 실례가되지 않는다면 변명 할 것입니다. –
필자가 작성한 코드로 코드를 업데이트하려고했지만 어떤 행운을 얻지는 못했습니다. 인덱스와 함께 prepareVC init과 함께 오류가 발생합니다. 내 게시물 배열에 참조를 추가했지만 문제가 여전히 올바른 게시물을 검색하는 데 있습니다. Firebase에서 나는 그것을 "게시물"로 정했습니다. child (userID) .child (postID)가 도움이된다면 조금 더 잘 이해할 수 있습니다. @AleRavasio –