无法在xcode 6.1中调用!= nil生成错误
func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
if(elementName as NSString).isEqualToString("item"){
if ftitle != nil{
elements.setObject(self.ftitle, forKey: "title")
}
if link != nil {
elements.setObject(self.link, forKey: "link")
}
if fdescription != nil{
elements.setObject(self.fdescription, forKey: "description")
}
feeds.addObject(elements)
}
}
答案 0 :(得分:1)
如果ftitle
,link
和fdescription
不是可选,则无法将它们与nil
进行比较。
var str1:String?
var str2:String = "a"
if str1 != nil{ } // OK
if str2 != nil{ } // ERROR (Cannot invoke '!=' with an argument ....)
答案 1 :(得分:1)
我认为ftitle
,link
和fdescription
不是选项。
如果我认为ftitle
是一个字符串,
我会将其声明为
var ftitle : String?
然后你可以检查!= nil
,或者你可以像
if let temp = ftitle{
}
答案 2 :(得分:0)
非可选值无法与nil进行比较,因为它们不可能是可选和非可选背后的整个想法,
如果您认为在任何地方您的变量可能会或可能不会保留任何值,那么您应该将变量声明为可选,而不是非可选。
下面的代码示例显示了可选字符串
的示例var myOptionalStringType:String? = "NSDumb"
if (myOptionalStringType != nil) {
println("It's not nil")
}else{
println("its nil")
}
我建议您阅读this blog on optional type,以便在您使用可选类型时提供帮助。