我在外部函数中调用类中的变量时遇到问题。
Swift给我以下错误:使用未解析的标识符'imageFilename'
我怎么解决呢?我应该如何获得Filename
变量的值?
我的代码:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if (collectionView == self.collectionView1)
{
let cell : FeaturedCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier(self.reuseIdentifierFeatured, forIndexPath: indexPath) as! FeaturedCollectionViewCell
let imgURL: NSURL = NSURL(string: "http://localhost:9001/feature-0.jpg")!
let request: NSURLRequest = NSURLRequest(URL: imgURL)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request){
(data, response, error) -> Void in
if (error == nil && data != nil)
{
func display_image()
{
let imageFilename = UIImage(data: data!)
}
dispatch_async(dispatch_get_main_queue(), display_image)
}
}
task.resume()
cell.featuredImage.image = UIImage(named: imageFilename)
return cell
}
}
答案 0 :(得分:0)
dat$median <- (dat$Trip + 1) / 2
dat
# vehicleID Trip median
# 1 1 3 2.0
# 2 3 2 1.5
# 3 6 2 1.5
的范围是声明它的函数imageFileName
,它在display_image
之外不可见。问题不在于类中变量的访问,您的自定义单元类似乎没有声明名为if
的变量
修改强>
为什么不在完成闭包内设置图像?:
imageFileName
请注意,由于异步请求可能以未定义的顺序完成并且单元格重用,您最终可能会出现不正确的单元格图像,您可以将图像URL保存在单元格中并检查它是否与闭合完成时闭合中捕获的那个。
答案 1 :(得分:0)
如果在函数外部声明变量并在函数内部设置值,那该怎么办?然后您可以访问变量及其值。
您的问题肯定是您无法访问变量,因为它只是在函数内部知道。
尝试这样......
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if (collectionView == self.collectionView1)
{
let cell : FeaturedCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier(self.reuseIdentifierFeatured, forIndexPath: indexPath) as! FeaturedCollectionViewCell
var imageFilename: UIImage
let imgURL: NSURL = NSURL(string: "http://localhost:9001/feature-0.jpg")!
let request: NSURLRequest = NSURLRequest(URL: imgURL)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request){
(data, response, error) -> Void in
if (error == nil && data != nil)
{
func display_image()
{
imageFilename = UIImage(data: data!)
}
dispatch_async(dispatch_get_main_queue(), display_image)
}
}
task.resume()
cell.featuredImage.image = UIImage(named: imageFilename)
return cell
}
}
如果这对您有用,请写信给我。