比较两个相同的字符串,但它们被评估为false

时间:2016-04-13 19:18:24

标签: swift

如果用户iPhone属于某种型号,我试图只执行某段代码。我在iOS模拟器上进行测试,因此我使用iPhoneModel()函数来获取模拟器的设备模型并将其打印到控制台并将其粘贴到compare()函数中的if条件中。

func iPhoneModel() -> String {
    var sysinfo = utsname()
    uname(&sysinfo) // ignore return value
    return NSString(bytes: &sysinfo.machine, length: Int(_SYS_NAMELEN), encoding: NSASCIIStringEncoding)! as String
}

func compare() {
    if iPhoneModel() == "x86_64" {
        print("It Worked!")
    }
}

iPhoneModel()函数应该返回一个相同的字符串,该语句应为true,但它是false。我甚至将两个字符串打印到控制台上,用自己的眼睛检查它们,它们看起来都是相同的,但计算机却不这么认为。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为你可以删除空字符......

func iPhoneModel() -> String {
    var sysinfo = utsname()
    uname(&sysinfo) // ignore return value

    var iPhoneModel = NSString(bytes: &sysinfo.machine, length: Int(_SYS_NAMELEN), encoding: NSASCIIStringEncoding)! as String

    iPhoneModel = iPhoneModel.stringByReplacingOccurrencesOfString("\0", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)

    return iPhoneModel
}