ios - Swift facebook 在 uitableview 中标记 friend

标签 ios swift facebook api uitableview

我一直在尝试加载 facebook taggable_friends,我能够获取它们但无法在 UItableView 中加载它们。我尝试在“cell for Row at”方法中获取请求,但它会更改顺序或每 2-3 秒刷新一次。我尝试声明数组并存储姓名和个人资料图片,但我遇到了崩溃。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "friendCell", for: indexPath) as! friendstvc

    // The first try

    /*FBSDKGraphRequest(graphPath: "me/taggable_friends?limit=5000", parameters: nil).start { (connection, result, error) in
        if error != nil
        {
            print(error?.localizedDescription ?? "")
            cell.friendName.text = ""
            return
        }
        let dic = result as! Dictionary<String, Any>
        let data = dic["data"] as! NSArray
        if let name = dic["name"]
        {
            print(name as! String)
        }

        let valuedict = data[indexPath.row] as! Dictionary<String, Any>
        let id = valuedict["id"] as! String
        let name = valuedict["name"] as! String
        cell.friendName.text = name
        cell.profpic.profileID = id
    }*/

    // The second try
    cell.friendName.text = friendnames[indexPath.row] // crashes here
    cell.profpic.image = friendpictures[indexPath.row]


    return cell
}

第二次尝试在viewDidLoad中调用下面的方法

// for the second try
func loadtaggableFriends()
{
// Called in the viewDidLoad
FBSDKGraphRequest(graphPath: "me/taggable_friends?limit=5000", parameters: nil).start { (connection, result, error) in
    if error != nil{
        print(error?.localizedDescription ?? "")
        return
    }
    let dic = result as! Dictionary<String, Any>
    let data = dic["data"] as! NSArray
    if let name = dic["name"]
    {
        print(name as! String)
    }
    print(data.count)
    for i in 0...data.count - 1
    {
        let valuedict = data[i] as! Dictionary <String, Any>
        let name = valuedict["name"] as! String
        var dataurl: Data?
        if let picture = valuedict["picture"] as? NSDictionary, let data = picture["data"] as? NSDictionary, let url = data["url"] as? String
        {
            let loadurl = URL(string: url)
            dataurl = try? Data(contentsOf: loadurl!)
        }
        friendnames.append(name)
        friendpictures.append(UIImage(data: dataurl!)!)
    }
}
}
// declaring the arrays
var friendnames = [String]()
var friendpictures = [UIImage]()

最佳答案

问题是您使用两个数组而不是两个数组使用一个字典数组,例如:[[String:AnyObject]]。使用字典并将数据插入数组的方法是:

let dict = [String:AnyObject]() //create dictionary
    dict["friendpicture"] = "" //
    dict["friendnames"] = ""  //enter your data 
    arrOfDictionaries.append(dict) //insert data into array

像这样在 cellForRowAt 方法中访问数据:

 let dict = arrOfDictionaries[indexPath.item]
    friendpicture = dict["friendpicture"] 
    friendnames   = dict["friendnames"]

关于ios - Swift facebook 在 uitableview 中标记 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48380598/

相关文章:

ios - 如何在SwiftUI中打开ImagePicker?

ios - 如何将带有 Wit.ai iOS SDK 的 iOS 应用程序连接到运行 wit.ai 的 node.js 应用程序?

JavaScript Regex 检查电子邮件格式,如 Facebook 注册表

ios - iOS 11.3 的网络推送通知

ios - 无法使用 Facebook SDK 登录

ios - 无法将 Player 类型的值分配给 SKSpriteNode 类型

Facebook 问题的 iOS 社交框架

ios - 防止在 UITableViewCell 的 subview 上进行交互

ios - Firebase 可扩展性

ios - 如何在编码中用 '.xib' 文件替换 Storyboard