在 Swift 中比较 2 个字符串失败

Posted

技术标签:

【中文标题】在 Swift 中比较 2 个字符串失败【英文标题】:Comparing 2 strings fails in Swift 【发布时间】:2015-03-17 11:36:12 【问题描述】:

我看到一个奇怪的问题。我正在尝试在 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")
    

【问题讨论】:

outputString 上是否有尾随空格或回车?试试var newString = outputString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())if (newString == "Error")... 它说 NSCharacterSet 没有 whitespaceCharacterS‌​et 试过了没解决,让 outputString = responseString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) 文档有它:developer.apple.com/library/ios/documentation/Cocoa/Reference/… 你在你的 cmets 中看到那个特殊字符了吗(我的也是;)? 【参考方案1】:

我遇到了类似的问题,原因是编码错误。 我使用 UTF8 编码,但我比较的字符串是用 UTF16 编码的

String(data: model, encoding: .utf16) == String(data: data, encoding: .utf18)

是假的

【讨论】:

哇,我在再次搜索此问题时找到了自己的帖子。感谢我自己。 :D【参考方案2】:

NSString 类参考:http://goo.gl/rPwMUx

Swift 库参考 - String : http://goo.gl/591Ebo

两者是不同的。因此,您将无法对其中一个应用某些操作。

为了比较两个String,您可以使用outputString == "Error",因为存在比较运算符。

但是,为了比较两个NSString,您需要使用isEqualToString: 方法。在你的情况下,它应该像这样工作:outputString.isEqualToString("Error")

编辑 1:

此处的代码示例:http://swiftstub.com/445434073/

编辑 2:

您还可以将StringNSString== 运算符进行比较。

【讨论】:

试过了, outputString.isEqualToString("Error") 但条件仍然失败。 你能告诉我们(截图?)outputString 的确切值是多少? 现在尝试的代码是,var responseString:NSString = NSString(data:data, encoding:NSUTF8StringEncoding)! if (responseString.isEqualToString("Error")) NSLog("responseString: %@", responseString) - 这打印-> 2015-03-17 17:35:46.340 DocuScan[21654:924739] responseString: 错误 注释 为了比较两个 NSString,您需要使用 isEqualToString: 方法 为 false,您可以使用 == 将 NSString 与 Swift 字符串文字进行比较。刚刚在一个测试用例中试了一下,它通过了。

以上是关于在 Swift 中比较 2 个字符串失败的主要内容,如果未能解决你的问题,请参考以下文章

Swift XCUI 字符串断言失败

Swift3.0语言教程比较判断字符串

来自字符串的 Swift DateFormatter 日期在 NSDateFormatter 曾经工作的地方失败

在 Swift 中,当每对元素都是字符串时,如何遍历一个数组以获取 2 个变量?和一个字符串

Swift解码字符串JSON失败

C语言调用Swift方法并传参数