网上很多Swift开源代码都涉及到一个问题,那就是在读取远程资源时,出现NSURL.URLWithString错误。google了一圈,发现很多人也是这样写的。比如这篇:http://www.sitepoint.com/introduction-swift-programming-language/ 有些国外朋友说在尾部加了!后解决了问题,但是我试了还是没用。
出现问题的代码:
func setImage(urlString:String,placeHolder:UIImage!) { var url = NSURL.URLWithString(urlString) //报错为:URLWithString is unavailable : use object construction 'NSURL(string:)' //事实上,这仅适用于旧版本的swift var cacheFilename = url.lastPathComponent
其实,Swift 的语法尚未完全确定,在碰到与 Objective-C 有关的 API 时,可能会出现在 Objective-C 里能使用而 Swift 不能使用的情况,尤其是构造函数和类方法,这就属于这种情况。 在 Swift 里,不要使用原有的 API 调用形式和习惯,要使用 Swift 风格的构造函数初始化方式,所以报错代码改为:
var url = NSURL(string: urlString) // for swift 1.1+ xcode 6.1
网上很多人用最初的方法能够实现,是因为当时 Swift 语言还允许这种使用方式,但现在已经不允许了。
发表回复