2016-04-13 15 views
0

Sadece iPhone kullanıcıları belirli bir modele sahipse belirli bir kod bloğuna sahip olmaya çalışıyorum. IOS Simulator üzerinde test yapıyorum, bu yüzden simülatörün cihaz modelini almak için iPhoneModel() işlev körüğünü kullandım ve konsola yazdırdım ve compare() işlevindeki koşullara yapıştırdım.İki özdeş dizgiyi karşılaştırıyor, ancak false olarak değerlendiriliyorlar

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() işlevi aynı dizeyi dönmelidir ve ifade doğru olmalı, ama bunun yerine yanlıştır. Hatta her iki dizeyi de kendi gözlerimle kontrol etmek için konsollara yazdırdım ve ikisi de aynı görünüyor, ancak bilgisayar aksini düşünüyor. Herhangi bir fikir neden? Ben sadece boş karakterler atmak düşünüyorum

+0

kod tek tek ayrıntılı adıma bir hata ayıklayıcı kullanabilir miyim? –

+0

İçinde boşluk bırakmadığından emin olmak için her iki dizenin uzunluğunu yazdırın. – dasblinkenlight

+0

Ayrıca NSString'i –

cevap

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 
} 
İlgili konular