2012-01-17 15 views
49

iOS için Objective-C'de programlama yapıyorum. NSString türünde bir nesneyi BOOL türünde bir skaler olarak ayrıştırmak istiyorum.NSString Object-C'de BOOL içine nasıl ayrılır?

Bir değere sahibim ve bunun "YES" veya @ "HAYIR" olacağını, ancak YES (veya) NO değerinin NSString olduğunu ve sadece NSString'i BOOL olarak değiştirmek istediğimi biliyorum.

Bunu nasıl yapabilirim?

Lütfen biliyorsanız bana cevap verin.

Okumak için teşekkürler.

cevap

141

Ben bu olduğunu düşünüyorum: Muhtemelen NSString 'ın -boolValue kullanmalıdır

BOOL boolValue = [myString boolValue]; 
+0

Teşekkürler çok aldım. –

+0

"Abdul" ın boolValue ne olacak? Lütfen bana öner. –

+3

@Abdul Yasin, 0/yanlış olacak. Bu yöntem yalnızca dizede bir boole değeri olduğunu biliyorsanız etkilidir; Örneğin. @ "1", @ "true", @ "YES" vb. Bunlardan başka, boolValue her zaman 0 değerini döndürür; – x4h1d

2
if ([string isEqualToString: @"YES"]) 
    foo(); 
else 
    bar(); 
+0

LOL u 6 saniye ile yendin! haha – Steve

+1

Bu doğru yol değil. Bschultz ve Tommy'nin diğer iki cevabını görün. –

+0

Tim Toady aksi halde ;-) –

22

. Belgeleri doğrudan alıntılamak için: alıcının metninin Boolean değerini döndürür. "Y", "y", "T", "t" veya 1-9 arasındaki bir basamakla karşılaşan numaralı EVET'i döndürür; yöntemi, izleyen karakterleri yok sayar. Alıcı, numaranın geçerli bir ondalık metin gösterimi ile başlamaması durumunda HAYIR. Girdi durumlarınızla eşleşecek gibi görünebilir.

+0

Teşekkürler çok aldım. –

0

Bu muhtemelen en iyi örneğin bir koşullu ile çözülmüş olur:

if ([myString isEqualToString:@"YES"]) 
    myBool = YES; 
else if ([myString isEqualToString:@"NO"]) 
    myBool = NO; 

Umut bu programlama, iyi şanslar size yardımcı oldu.

+1

Bu çözüm doğru olmaktan çok uzaktır. Bir boole bir dizgede saklanmanın sayısız yolu vardır ve bu sadece çok özel bir işlem yapar. Neden zaten uygulanan bir yöntemin işlevselliğini çoğaltın. – FreeAsInBeer

+0

Bu çok kirli bir yol. – AlKozin

0

dize i uzatma gerekli olduğunu düşünüyorum yüzden bu doğru 'ise bu özellik de geçerlidir dönmelidir ...

extension NSString{ 
var boolValueExtended: Bool { 
    get{ 
     return boolValue || 
      self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()).uppercaseString == "TRUE" 
    } 
} 

}