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'
}
}
我将非常感谢您的帮助。
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!作为数据)
}