gpt4 book ai didi

ios - 使用 Facebook 好友填充桌面 View

转载 作者:行者123 更新时间:2023-11-30 12:17:09 32 4
gpt4 key购买 nike

这个想法是用 Facebook 好友的 ID(来自 Graph 请求)填充字符串数组,然后在 (Firebase) 数据库中搜索这些 ID(作为子项),最后用相关数据(用户名)填充表格 View ,图像)从数据库中读取。这就是我尝试的原因:

let params = ["fields": "id"]

let request = FBSDKGraphRequest(graphPath: "me/friends", parameters: params, httpMethod: "GET")
let connection = FBSDKGraphRequestConnection()
connection.add(request, completionHandler: { (connection, result, error) in
if error != nil {
print("error")
} else {
if let userData = result as? [String:Any] {
let data: NSArray = userData["data"] as! NSArray
for i in 0..<data.count {
let dict = data[i] as! NSDictionary
let temp = dict.value(forKey: "id") as! String
// temp is an ID of a Facebook friend
self.ref.child("users").queryOrdered(byChild: "fbid").queryEqual(toValue: temp).observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.exists() {
let snap = snapshot.value as? NSDictionary
self.usersArray.append(snap?["username"] as! String)
self.tableView.reloadData()
//tableview is obviously populated with usersAray
}
})

}
}
}
})
connection.start()

没有运气。我希望有更好更快的方法来实现目标。预先感谢您。

最佳答案

代码看起来不错并且似乎可以工作,因此一项修改是在填充数组后重新加载 tableView,而不是每次都重新加载 - 这将防止闪烁。您必须异步执行此操作,以便在加载数据后发生表更新。它不会真正加快速度,但从问题中不清楚哪一部分是“慢”

另一个选择是通过 .value 将/users 节点加载到数组中,并通过该数组查找 fbid,而不是一遍又一遍地点击 Firebase。该解决方案可能/可能不可行,具体取决于用户数量。

一个 super 酷的选择是拥有一个仅包含 Facebook ID 和用户名的单独节点。因此,如果您的用户节点如下所示

/users
uid_0
fbid: "fbid_1"
name: "Pete"
uid_1
fbid: "fbid_2"
name: "George"

有另一个节点可以直接访问您想要的数据,而不是运行查询。

/lookup
fbid_1: "Pete"
fbid_2: "George"

这将大大简化您的加载代码 - 像这样

for i in  0..<data.count {
let fbid = data[i]
let userRef = self.ref.child("lookup").child(fbid)
userRef.observeSingleEvent(of: .value, with: { snapshot in
let name = snapshot.value as! String
usersArray.append(name)
})
}

Firebase 查询比直接访问节点“更重”,如果您执行大量操作,则直接加载节点并避免查询可以加快访问速度。

关于ios - 使用 Facebook 好友填充桌面 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45273909/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com