Ich versuche, einen bestimmten Codeblock nur ausgeführt werden, wenn das iPhone des Benutzers von einem bestimmten Modell ist. Ich teste auf dem iOS Simulator, also habe ich die Funktion iPhoneModel()
unten verwendet, um das Gerätemodell für den Simulator zu erhalten und es auf die Konsole zu drucken und in die if-Bedingung in der compare()
-Funktion einzufügen.Vergleicht zwei identische Zeichenfolge, aber sie werden als falsch bewertet
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!")
}
}
Die iPhoneModel()
Funktion sollte eine identische Zeichenfolge zurück, und die Aussage wahr sein sollte, sondern es ist falsch. Ich habe sogar beide Saiten auf die Konsole gedruckt, um sie mit meinen eigenen Augen zu überprüfen, und sie scheinen beide identisch zu sein, doch der Computer denkt anders. Irgendwelche Ideen warum?
Können Sie einen Debugger den Code nacheinander gründlich zu treten? –
Drucken Sie die Längen beider Zeichenfolgen, um sicherzustellen, dass dort keine abschließenden Leerzeichen enthalten sind. – dasblinkenlight
Vielleicht konvertieren Sie auch die NSString in eine reguläre Zeichenfolge vor dem Vergleich –