代码之家  ›  专栏  ›  技术社区  ›  about14sheep

根据用户附近的帖子填充TableView

  •  0
  • about14sheep  · 技术社区  · 7 年前

    我正在尝试tp从firebase中提取所有用户帖子,以基于相对于当前用户位置的帖子位置填充一个TableView。

    我编写了一个方法来确定用户与firebase中存储的帖子位置之间的距离。

    *我修改了该方法以封装所有填充的tableview数据;但是,它仍然没有找到“userLocation”的值*

     func populateTableView() {
    
        let userId = Auth.auth().currentUser?.uid
         Database.database().reference().child("posts").child(userId!).observeSingleEvent(of: .value, with: { (snapshot) in
            let data = snapshot.value as? [String: AnyObject] 
            let postLocation = data!["userLocation"] as? CLLocation //this is where it throws an error(found nil while unwrapping)
            let distanceFromPost: CLLocationDistance = self.locationManager.location!.distance(from: postLocation!)
            if self.metersInTwentyFiveMiles > distanceFromPost {
               self.inRangeOf = true
                Database.database().reference().child("posts").observe(.value, with: { (snapshot) in
                    if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
                        self.posts.removeAll()
    
                        for data in snapshot {
                            print(data)
                            if let postDict = data.value as? [String: AnyObject] {
                                let key = data.key
                                let post = Post(postKey: key, postData: postDict)
                                self.posts.append(post)
                                }
                        }
                        self.tableView.reloadData()
                    }
                }, withCancel: nil)
                } else {
               self.inRangeOf = false
                print("no posts nearby")
                }
         })
        }
    

    现在在viewDidLoad中,我只调用了populateTableView函数

       self.populateTableView()
    

    我从模拟器的确切位置在firebase中存储了许多帖子,只是没有在函数中获取它们。

    firebase中的数据结构如下:

    -posts
     -L922cw8LC2fpxLI1zZH
      imageUrl: 
      likes: 
      userImg: 
      userLocation: 
      username: 
    

    有人能帮我吗?populateTableView方法是否不能从正确的子节点读取?

    1 回复  |  直到 7 年前
        1
  •  2
  •   R.Villanueva    7 年前

    我不知道我是否理解你的意图,但据我所知:

    if self.metersInTwentyFiveMiles < distanceFromPost {
    

    这应该是

    if self.metersInTwentyFiveMiles > distanceFromPost {
    

    到达距离:MÃ最大距离>当前距离