无法调用!= nil在xcode 6.1中生成错误

时间:2015-03-30 07:20:43

标签: ios iphone swift xcode6.1

无法在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)
    }
}

3 个答案:

答案 0 :(得分:1)

如果ftitlelinkfdescription不是可选,则无法将它们与nil进行比较。

var str1:String?
var str2:String = "a"

if str1 != nil{ } // OK

if str2 != nil{ } // ERROR (Cannot invoke '!=' with an argument ....)

请参阅此处的解释What is an optional value in swift

答案 1 :(得分:1)

我认为ftitlelinkfdescription不是选项。

如果我认为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,以便在您使用可选类型时提供帮助。