Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift如何比较来自NSString的字符串_Ios_Swift_Nsstring_Compare - Fatal编程技术网

Ios Swift如何比较来自NSString的字符串

Ios Swift如何比较来自NSString的字符串,ios,swift,nsstring,compare,Ios,Swift,Nsstring,Compare,我从php制作的服务器中得到一个返回号(0表示成功,1表示失败) 所以我想用这个数字来判断我的手术成功与否。 我用这个: var str1 :String = NSString(data: d, encoding: NSUTF8StringEncoding)! let str2 = "1" println(str1) // output is 1 println(str2) // output is 1 if(str1==str2){println("same")} //but the two

我从php制作的服务器中得到一个返回号(0表示成功,1表示失败) 所以我想用这个数字来判断我的手术成功与否。 我用这个:

var str1 :String = NSString(data: d, encoding: NSUTF8StringEncoding)!
let str2 = "1"
println(str1) // output is 1
println(str2) // output is 1

if(str1==str2){println("same")} //but the two is not same
因此,我对此进行调试,并得到以下结果: //str1计数和标志UWord 13835058055282163717-4611686018427387899 //str2计数和标志UWord 1

我试着用toInt。我得到1383。。。表格str3和1表格str4 那么我该如何解决这个问题呢。
非常感谢。

听起来您的字符串中有一些空格。要使用
println
发现此问题,您可以尝试
println(“,”.join(map(str1,toString))
。如果您看到任何逗号,这就是问题所在

解决此问题的最简单方法(最好在源代码处消除空白)是使用
stringByTrimmingCharactersInSet

let str1: String = NSString(data: d, encoding: NSUTF8StringEncoding)
                   ?.stringByTrimmingCharactersInSet(
                     NSCharacterSet.whitespaceAndNewlineCharacterSet())
let str2 = "1"
if str1==str2 { println("same") }
请注意其他一些变化:

  • let
    而不是
    var
    ,因为声明后您似乎不需要更改
    str1
  • 在创建
    NSString
    结束时,不强制展开(
    )。永远不要强制展开可能为零的内容,否则会出现运行时错误
  • ?。
    选择调用trim,如果它不是nil
注意,这意味着
str1
是一个
字符串?
不是
字符串
,但这很好,因为您可以将可选值与非可选值进行比较(如果可选值包含与非可选值相等的值,则两者相等,但如果可选值包含
nil
,则两者不相等)

如果您实际需要的是一个
Int
,只需添加一个
let int1=str1?.toInt()
。这仍然是可选的–如果在
nil
的情况下存在合理的默认值,则可以执行
let int1=str1?.toInt()??0
,如果在swift 2中出现
nil
,,则该值为
0
为非可选值
let str=“string”
让nsstr:NSString=“string”
如果nsstr.包含字符串(str){
打印(真)
}否则{
打印(假)
}

这对我有用

如果斯威夫特说字符串不相等,那么它们就不相等。注意空格和不可打印字符。我认为这可能是问题所在(要快速检查,请将
println(str1)
更改为
println(“,”。加入(map(str1,toString))
–如果您看到任何逗号,这就是您的问题)。然而,这里似乎有4个变量在起作用–
str3
str4
returnOne
str1
。您正在比较
returnOne==str1
,但是给
str3
str4
赋值……对不起,我比较了str3和str4,它们不一样,我得到了,,,,1。但是如何解决这个问题,谢谢。我不明白str3和str4是什么?您只是在比较str1和returnOne