swift处理NSData初始化失败

时间:2014-09-22 07:07:24

标签: swift initialization nsdata xcode6

我有以下一行:

let jsonResults = NSData(contentsOfURL: Fetcher.URLforLicenseInfo())

这编译并执行正常,但如果NSData的初始化失败,我会在代码中稍后得到异常。我试图添加另一行:

if jsonResults != nil { ///blah, blah...

然后编译器抱怨"Cannot invoke '!=' with an argument list type '(NSData, NilLiteralConvertible)"

编译器是否应该将NSData初始化返回类型识别为可选的?

2 个答案:

答案 0 :(得分:3)

检查数据的长度:if(data.length > 0) ...

答案 1 :(得分:2)

NSData初始化工具永远不会返回nil。另一方面,当你写jsonResults != nil时,jsonResults意味着可选择if jsonResults != nil {},但不是。

jsonResults.length条件毫无意义。

相反,您可以检查数据对象if != nil

包含的字节数

何时使用func toJson() -> NSData? { return nil // dummy } let jsonResults:NSData? = toJson() // jsonResults must be optional if jsonResults != nil{ println(jsonResults!.length) // The number of bytes contained by the data object. } 声明?

请考虑以下示例:

jsonResults

注意:由于let是常量(又名nil),因此只读变量,您无法在其中进行更改未来,即使这个值得到extension NSData { // ... init(contentsOfURL url: NSURL) // ... }


参考

{{1}}