我正在尝试考虑构建数据库的最佳方法,以允许用户发送/接受/拒绝用户作为朋友。
我目前有一个系统,允许用户搜索用户,检查所有必要的东西,比如已经在他们的列表中的人 bhalbhla,但我不知道如何通过实际发送邀请来完成它。
我的结构如下:
Users
290384239843
friends:
093824098209384: true
username: Bob
Usernames
Bob: 290384239843
Run Code Online (Sandbox Code Playgroud)
我想当我点击添加按钮时,它会向 Firebase 上的两个用户发送一些内容,我认为这两个选项是:
users
29038493
friends
0283940839024: pending
Run Code Online (Sandbox Code Playgroud)
或者
users
02938409384
friends
3094809384903 : true
pendingFriends:
0283940839024: true
Run Code Online (Sandbox Code Playgroud)
我认为两者都可能有效,但我想我会伸出援手,以防我能从对此有更多经验的人那里得到一些指导。也许有更好的完全不同的方法?
我把针脚放在地图上,当我点击它们时,我正在调用它didSelect.该功能仅在第一次触发引脚时被调用,之后不会再次调用相同的引脚,除非我选择另一个引脚然后返回并点击它.
对我来说听起来就是引脚正在被选中,并且didSelect只能在未选择的引脚中调用,所以当我点击另一个引脚时,它会取消选择第一个引脚并使其再次可点击.
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
view.isSelected = false
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么上面的代码不起作用.
如何允许连续多次使用我的注释?
我刚刚实现了一个朋友添加系统,我正在摸索如何只允许用户查看朋友的帖子。
在我显示帖子的主屏幕上,我有:
DataService.ds.REF_USERS.child(currentUser!).child("friends").observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in
for snapshots in snapshot.children.allObjects {
let snap = snapshots as! FIRDataSnapshot
var frand = String(snap.key)
self.friendsArray.append(frand)
}
Run Code Online (Sandbox Code Playgroud)
这会拉回他们所有朋友的 UID。
然后我想搜索所有具有该 UID 的帖子。
我想也许我可以通过一个带有 equalTo 查询的friendsArray 做一个for循环......?但是我不确定如何使用我当前现有的查询来实现它,该查询显示了我想要查看的回帖:
DataService.ds.REF_POSTS.queryOrderedByChild("timestamp").queryStartingAtValue(cutoff).observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in
Run Code Online (Sandbox Code Playgroud)
- 一堆设置我的帖子并将其附加到数组的代码-
self.collectionView.reloadData()
})
Run Code Online (Sandbox Code Playgroud)
我的一些数据结构是:
users
3093098409384
friends
29834098209 : true
posts
099390234
userWhoPosted: 29834098209
Run Code Online (Sandbox Code Playgroud)
所以我将朋友从用户-> 朋友-> UID 位中拉出来,但是我如何取回这些用户发布的帖子,然后执行我正在做的正常查询?
任何指导表示赞赏。