来自swift

时间:2016-01-29 20:52:16

标签: swift variables global-variables call xcode7

我在外部函数中调用类中的变量时遇到问题。

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
    }
}

Image capture link

2 个答案:

答案 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
}
}

如果这对您有用,请写信给我。