2014-11-06 56 views
2

我是XCode和Swift的新手。尝试在OS X应用程序中简单地设置我的视图中的图像。图像应该从网上加载,但我认为这并不重要。Swift:如何更改NSImage图像源?

我创建了一个新的可可应用程序,有一个可用的列表视图。在列表行的XIB中,我放置了一个“Image View”元素,并且可以在每行中显示静态图像。

现在我想在行加载时更改图像URL。我将图像中的行拖到我的控制器类中,该类将@IBOutlet添加到代码中。

这是我的控制器类的代码:

import Cocoa 

class ListRowViewController: NSViewController { 

    @IBOutlet weak var rowImage: NSImageView! 

    override var nibName: String? { 
     return "ListRowViewController" 
    } 

    override func loadView() { 
     super.loadView() 

     var url = NSURL(fileURLWithPath: "http://example.com/some-image.png") 

     var image = NSImage(byReferencingURL: url!) 

     self.rowImage.image(image) 
    } 

} 

现在非常 搞笑 令人沮丧的错误从最后一条语句消息(self.rowImage.image(image))是

不能转换表达式的类型“NSImage中'键入'NSImage?'。

好的。这是什么意思,我该如何解决它?这与某些选择权有关吗?我尝试了?的和!的,但无法弄清楚XCode对我的期望。

回答

2

imageNSImageView属性,你可以分配给它。

self.rowImage.image = image 

而且,您的网址有误NSURL(fileURLWithPath:)用于本地文件。改为使用NSURL(string:)

var url = NSURL(string: "http://example.com/some-image.png") 
+0

Thanks @rintaro,那真的是它。我有点尴尬。在我经历的Objective-C教程中,有一个'.setImage'方法,现在它似乎已经不存在了。有意义的是,'.image'是属性。猜猜它在XCode中提出的问题太多,没有提供像“没有这样的方法:图像”的提示。 :)而且你对NSURL再合适不过了。随着这两个变化,它的作品完美。再次感谢! – udondan 2014-11-07 03:08:30