我看到一个奇怪的问题。我想在Swift中比较2个字符串。一个字符串来自我从服务器获得的响应。在下面的代码中,它打印为"错误"在outputString NSLog正确。但是,当我在下一行中进行比较时,它会失败,它不会在那里抛出错误警报。我不知道我在这里做错了什么。
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
var outputString:NSString = NSString(data:data, encoding:NSUTF8StringEncoding)!
NSLog("outputString: %@", outputString)
if (outputString=="Error") {
NSLog("Error")
}
}
答案 0 :(得分:1)
NSString
课程参考:http://goo.gl/rPwMUxSwift Library参考 -
String
:http://goo.gl/591Ebo
两者不同。因此,您将无法在其中一个上应用某些操作。
为了比较两个String
,您可以outputString == "Error"
,因为存在比较运算符。
但是,为了比较两个NSString
,您需要使用isEqualToString:
方法。在您的情况下,它应该这样工作:outputString.isEqualToString("Error")
。
修改1:
此处的代码示例:http://swiftstub.com/445434073/
编辑2:
您还可以将String
与NSString
与==
运算符进行比较。
答案 1 :(得分:0)
我遇到了类似的问题,原因是编码错误。 我使用UTF8编码,但我比较的字符串是用UTF16编码的
String(data: model, encoding: .utf16) == String(data: data, encoding: .utf18)
是假的