Swift 展开可选数据错误

Swift unwrapping optional giving error with data

我的 iOS 应用程序从服务器获取数据并使用 'Kingfisher' 从该数据中渲染一些图像,问题是每当我在服务器应用程序上添加或替换新图像时由于下面的代码而崩溃错误 : “致命错误:在展开可选值时意外发现 nil

let prfix:String = "MY_PREFIX_URL /\(org.image)"
celImage.kf_setImageWithURL((NSURL(string: prfix))!)

详情请查看截图 我不明白为什么会出现此错误,因为您可以看到 prfix 得到了一个值。

NSURL(string:) 是一个可失败的初始化程序,然后可以 return nil 如果您的 string 参数不是有效的 URL,您可以阅读NSURL:

的文档

Initialize a NSURLComponents with a URL string. If the URLString is malformed, nil is returned.

您必须检查您的最终 URL 完整性,因为它显然格式不正确...

我认为这是由于 prefix 包含不必要的字符,您可以使用 URLHostAllowedCharacterSet

解决此问题

您可以像这样修复 prefix 格式错误的 url (swift 2.x)。

let urlStr : NSString = prfix.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())!

celImage.kf_setImageWithURL((NSURL(string: urlStr as String))!)

这将确保 url 只包含正确的字符串。