gpt4 book ai didi

ios - 在 IBAction 之外快速获取更新的变量

转载 作者:行者123 更新时间:2023-11-30 13:05:34 26 4
gpt4 key购买 nike

我很难找到如何获取更新facebookProfileUrl,以便我可以将图像放入单元格的 ImageView 中。正如您在代码中看到的,我在页面顶部使用 var facebookProfileUrl 创建了一个实例。在代码的底部,您可以看到如果 facebookProfileUrl 为空,它会这样说 - 这就是这段代码正在做的事情。即使我在代码中间更改 facebookProfileUrl,也没有任何反应。我可以做什么来解决这个问题?

var facebookProfileUrl = "" // THIS IS BEFORE viewDidLoad



@IBAction func addToFeed(sender: AnyObject) {
let accessToken = FBSDKAccessToken.currentAccessToken()
if(accessToken != nil) //should be != nil
{
let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id"], tokenString: accessToken.tokenString, version: nil, HTTPMethod: "GET")
req.startWithCompletionHandler({ (connection, result, error : NSError!) -> Void in
if(error == nil)
{
let userId: String? = result.valueForKey("id") as? String
let userID = userId
self.facebookProfileUrl = "http://graph.facebook.com/\(userID)/picture?type=large" // HERE I AM CHANGING THE VARIABLE

let feed = Sweet(content: feedContent, addedByUser: name!, profilePhoto: self.facebookProfileUrl)
let feedRef = self.dbRef.child(feedContent.lowercaseString)

feedRef.setValue(feed.toAnyObject())

}
else
{
print("error \(error)")
}
})
}
}





override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:updateTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! updateTableViewCell


let update = updates[indexPath.row]


cell.nameLabel.text = update.addedByUser
cell.updateLabel.text = update.content


if (facebookProfileUrl != "") {
if let url = NSURL(string: facebookProfileUrl) {
if let data = NSData(contentsOfURL: url) {
cell.picView.image = UIImage(data: data)
}
}
} else {
print("Empty facebookProfileUrl") // THIS ONE IS PRINTED
}



return cell
}

最佳答案

您应该在完成 block 中调用 self.tableView.reloadData() (我建议作为 if error == nil 条件中的最后一行)

如上所述,这是一个异步调用,这意味着该 block 中的代码 req.startWithCompletionHandler({ ... }) 将在服务器响应后调用。此时,tableView 可能已经加载了其数据(换句话说,已为当前屏幕上的所有单元格调用了 cellForRowAtIndexPath)。

不过要小心!我不确定你到底想要完成什么,而且我还没有看到你的所有代码,但是按照你这样做的方式,所有单元格都将具有相同的网址。如果没有更多信息,很难推荐更好的方法来做到这一点,但要小心。

关于ios - 在 IBAction 之外快速获取更新的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415589/

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