Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 无法指定类型为';字符串';输入';UIImage';_Swift - Fatal编程技术网

Swift 无法指定类型为';字符串';输入';UIImage';

Swift 无法指定类型为';字符串';输入';UIImage';,swift,Swift,这是我的代码,请帮助,我正在遵循一个教程,但我不能找出什么是错的。请帮忙 我试图确定是否选择了该图像,然后执行到另一个视图控制器的切换,并显示之前选择的图像 override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { self.performSegueWithIdentifier("showImage", sender:

这是我的代码,请帮助,我正在遵循一个教程,但我不能找出什么是错的。请帮忙

我试图确定是否选择了该图像,然后执行到另一个视图控制器的切换,并显示之前选择的图像

 override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
{
    self.performSegueWithIdentifier("showImage", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier == "showImage"
    {
        let indexPaths = self.collectionView!.indexPathsForSelectedItems()!
        let indexPath = indexPaths[0] as NSIndexPath
        let vc = segue.destinationViewController as! SecondViewController
        vc.image = self.url[indexPath.row] //Error Cannot Assign a value of type 'String' to type 'UIImage'
    }
}

我将非常感谢您的帮助。

,您将indepath.row作为字符串,您必须从字符串中获取图像,在您的
self.url[“here”]
中使用类似于
UIImage(名为:“imagename”)
,在所有
self.url[UIImage(名为:indepath.row)

视图控制器vc应该有UIImage类型的image变量。

vc.image=self.url[indexPath.row]
,您将indexPath.row作为字符串,您必须从字符串中获取图像,在
self.url[“here”]
中使用类似于
UIImage(名为:“imagename”)
,总之
self.url[UIImage](命名为:indexath.row)

视图控制器vc应该有UIImage类型的image变量。

self.url[indexPath.row]给出了一个字符串值,您不能直接将字符串分配给图像,这就是它抛出错误的原因。无法将“String”类型的值分配给“UIImage”类型。

因此,您必须将其转换为如下所示的数据

let ImageView = UIImageView()
let data = NSData(contentsOfURL: NSURL(string: "http://www.macmillandictionaryblog.com/wp-content/uploads/2011/07/Small-Talk-image.jpg")!)
ImageView.image = UIImage(data: data!)
在您的情况下,下面的代码可能会有所帮助,我认为Self.url是一个包含图像url作为字符串的数组

if segue.identifier == "showImage"
{
    let indexPaths = self.collectionView!.indexPathsForSelectedItems()!
    let indexPath = indexPaths[0] as NSIndexPath
    let vc = segue.destinationViewController as! SecondViewController
    let URLStr = self.url[indexPath.row] as! String
    let data = NSData(contentsOfURL: NSURL(string: URLStr)!)
    vc.image.image = UIImage(data: data!) //Now it will work if vc.image is an UIImageView
}

self.url[indexPath.row]给出了一个字符串值,您无法直接将字符串分配给图像,这就是它抛出错误的原因无法将“String”类型的值分配给“UIImage”类型。

因此,您必须将其转换为如下所示的数据

let ImageView = UIImageView()
let data = NSData(contentsOfURL: NSURL(string: "http://www.macmillandictionaryblog.com/wp-content/uploads/2011/07/Small-Talk-image.jpg")!)
ImageView.image = UIImage(data: data!)
在您的情况下,下面的代码可能会有所帮助,我认为Self.url是一个包含图像url作为字符串的数组

if segue.identifier == "showImage"
{
    let indexPaths = self.collectionView!.indexPathsForSelectedItems()!
    let indexPath = indexPaths[0] as NSIndexPath
    let vc = segue.destinationViewController as! SecondViewController
    let URLStr = self.url[indexPath.row] as! String
    let data = NSData(contentsOfURL: NSURL(string: URLStr)!)
    vc.image.image = UIImage(data: data!) //Now it will work if vc.image is an UIImageView
}

使用此代码在Swift4中工作正常

    let subCategory = tableData[indexPath.row]
    let urlString = "https://cdn.urldecoder.org/assets/images/url_fb.png"
    print(urlString)
    let url = URL(string: urlString!)
    let data = try? Data(contentsOf: url!)
    if let imageData = data {
        let image = UIImage(data: imageData)
        cell?.userPicImage.image = image
    }else {
        cell?.userPicImage.image = UIImage(named: "SomeEmptyImage")
    }

使用此代码在Swift4中工作正常

    let subCategory = tableData[indexPath.row]
    let urlString = "https://cdn.urldecoder.org/assets/images/url_fb.png"
    print(urlString)
    let url = URL(string: urlString!)
    let data = try? Data(contentsOf: url!)
    if let imageData = data {
        let image = UIImage(data: imageData)
        cell?.userPicImage.image = image
    }else {
        cell?.userPicImage.image = UIImage(named: "SomeEmptyImage")
    }
就这么简单

let url = NSURL(string:"<image url>")
    let imagedata = NSData.init(contentsOf: url! as URL)

if imagedata != nil {
    cell.imageView.image = UIImage(data:imagedata! as Data)
}
let url=NSURL(字符串:“”)
让imagedata=NSData.init(contentsOf:url!作为url)
如果imagedata!=nil{
cell.imageView.image=UIImage(数据:imagedata!作为数据)
}
就这么简单

let url = NSURL(string:"<image url>")
    let imagedata = NSData.init(contentsOf: url! as URL)

if imagedata != nil {
    cell.imageView.image = UIImage(data:imagedata! as Data)
}
let url=NSURL(字符串:“”)
让imagedata=NSData.init(contentsOf:url!作为url)
如果imagedata!=nil{
cell.imageView.image=UIImage(数据:imagedata!作为数据)
}