我正在制作一个聊天应用程序,我只想在这样的条件下交朋友,如果 userA 有朋友 userB == ture 且 userB 有 userA == true ,我希望他们交朋友 . 为了让你更清楚这里是 json 格式:
user_friends: {
$userA: {
friends: {
$userB: true
}
},
$userB: {
friends: {
$userA: true,
$userC: true
}
},
$userC: : {
friends: {
$userA: true,
$userB: true
}
}
}
如上面的 json , userA 将 userB 作为朋友, userB 将 userA & userC 作为朋友, userC 将只有 userB 作为朋友因为 userA 没有 userC 作为他的朋友 . 这是我的数据模型,不确定它是否完美
import Foundation
import SwiftyJSON
struct Friends {
var myFriends:[Bool]!
struct Friend {
let key: String
let is_friend: Bool
init(snap: FIRDataSnapshot) {
self.key = snap.key
self.is_friend = (snap.value != nil)
}
}
这是我试图获取数据并比较它们的功能,但它不能按我的意愿工作
func getFriendList() {
if self.user != nil {
_ = self.ref.child("user_friends").child((user?.uid)!).observeSingleEvent(of: .value, with: { snapshot in
for snap in snapshot.children {
for friends in (snap as AnyObject).children {
// cast friend and append to myFriends
print(friends)
let friend = Friend(snap: friends as! FIRDataSnapshot)
self.myFriends.append(friend)
print("my friends are\(self.myFriends.description)")
print("friends count\(self.myFriends.count)")
if (self.myFriends.count > 0) {
for friend in self.myFriends {
_ = self.ref
.child("user_friends")
.child(friend.key)
.child("friends")
//.child((self.user?.uid)!)
.observeSingleEvent(of: .value, with: { snapshot in
print("Desired Snapshot\(snapshot)")
//Now I need to check the condition here
})
}
}
}
}
})
}//FIRAuth ends here
}//getFriendList ends here
这是我的实际数据库设计:
和调试结果
我想我需要拿两个字典并比较它们的值 . 它几乎像 instagram 功能,如果有人跟踪用户并且用户跟随他,他们启用了消息选项,消息选项不会打开,直到他们互相跟随 . 请任何善良的人出面帮助我 . 我遇到了麻烦 . 谢谢 .
1 回答
你正在做很多你不需要的循环和解析 . 这就是我要做你想做的事情:
validatedFriendsForUser()不是必需的,但是如果要检查用户A是否在数据库中将用户B的密钥设置为
true
.