所以我使用fabric plugin / Twitter-kit在我的应用程序中使用twitter api.我想获得一个名人的个人资料图片的图片网址.这是我的代码如下.
func getimageURL(celebrity :String) -> String{ var imageURL = "" let client = TWTRapiclient() let statusesShowEndpoint = userSearch let params = ["q": celebrity,"page" : "1","count" : "1" ] var clientError : NSError? let request = client.URLRequestWithMethod("GET",URL: statusesShowEndpoint,parameters: params,error: &clientError) client.sendTwitterRequest(request) { (response,data,connectionError) -> Void in if connectionError != nil { print("Error: \(connectionError)") } do { let json = try NSJSONSerialization.JSONObjectWithData(data!,options: []) print("json: \(json)") let profileImageURL: String? = json[0].valueForKey("profile_image_url_https") as? String imageURL = self.cropTheUrlOfImage(profileImageURL!) print(imageURL) //how do i return the value back. confused ????? return imageURL } catch let jsonError as NSError { print("json error: \(jsonError.localizedDescription)") } } return imageURL }
我不知道如何返回值,因为该方法在闭包执行之前完成.我是新手,很快,任何帮助表示赞赏.
我想在tableview中的cellForRowIndexPath中使用此方法来从imageURl下载图像.
解决方法
你是对的,sendTwitterRequest将在你的函数返回后返回,所以外部函数无法返回imageURL.
相反,在闭包中,获取单元格中所需的返回值并将其存储在某处(在成员变量中)并让tableView自行更新它(例如使用tableView.reloadData()).
这将导致它再次获取单元格(cellForRow …).更改实现以使用存储调用值的成员变量.