我得到一个由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 _countAndFlags UWord 13835058055282163717 -4611686018427387899str2 _countAndFlags UWord 1 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
结束时没有强制解开包装(!
)。 切勿强制解开可能为零的内容,否则会出现运行时错误! -
?.
可以选择调用修剪(如果它不是 nil)。
请注意,这意味着str1
是一个String?
而不是一个String
但这很好,因为您可以将可选与非可选进行比较(如果可选包含等于非可选的值,它们将相等,但如果可选包含nil
,则不相等)
如果你真正想要的是一个Int
,只需添加一个let int1 = str1?.toInt()
。 这仍然是一个可选的 - 如果在nil
的情况下有一个合理的默认值,你可以做let int1 = str1?.toInt() ?? 0
,在nil
的情况下,它将是非可选的,值为0
。
在 swift 2 中您可以使用 let str = "string"
let nsstr:NSString = "string"
if nsstr.containsString(str){
print(true)
}else{
print(false)
}
它对我有用