将NSString与获得NSInternalInconsistencyException的int进行比较

时间:2018-02-19 20:16:18

标签: ios swift

我正在为我的iOS应用创建一个登录,并收到错误NSInternalIncosistencyException

最初 if (responseString=="1") { 由于某种原因永远不会实现所以我改为下面的代码返回true但导致错误? if (responseString?.intValue==1) {

这是怎么回事?

修改
我完全被这个问题困惑了。我已将PHP文件更改为echo'good'而不是'1',以尝试取消将String与Int进行比较的问题。

这是我目前的代码

let responseString = NSString(data: data!, encoding: 
        String.Encoding.utf8.rawValue)
        let goodVal: NSString = "good"
        print ("responseString =\(responseString!))")
        print (goodVal)
        print(responseString==goodVal)
        if responseString == goodVal{
            print("IN LOGIN")



所以这就是我的代码看起来是什么,它产生的输出低于Display Output

那么为什么在if语句中真的不成真呢?!

2 个答案:

答案 0 :(得分:0)

如果你想知道两个字符串是否相等,你可以使用你的第一个代码:

if (responseString=="1") { ... }

如果这种情况永远不会实现,那是因为responseString不是" 1"或者它可能是一个你必须解开的可选项。

答案 1 :(得分:0)

您应该在可选链接下尝试this示例作为强制解包的替代部分:

来自链接的部分:

if let roomCount = john.residence?.numberOfRooms {
    print("John's residence has \(roomCount) room(s).")
} else {
    print("Unable to retrieve the number of rooms.")
}
// Prints "Unable to retrieve the number of rooms."

使用IF..Let确定是否填充'responseString'变量并相应地使用它。

修改

根据您的评论,您可以尝试:

var responseString: String? = "1"

// example 1
if let responseCode = responseString {
    print("responseCode \(responseCode)")
    if(Int(responseCode) == 1) {
        print("responseCode is 1")
    }
} else {
    print("No response code")
}

// example 2
if responseString != nil {
    print("responseCode \(responseString!)")
}
else {
    print("No response code")
}