2013-02-28 61 views
1

我想知道是否有一個簡單的方法來比較一個const char與NSString,或者我必須在執行操作之前將const char轉換爲NSString比較Objective-C常量字符與NSString

我一直在尋找蘋果文檔,但努力尋找我的問題的答案。

+2

是否有你不想創建NSString的原因? – 2013-02-28 21:23:39

回答

9

要麼

NSString *str = @"string"; 
const char *myChar = "some string"; 
if (strcmp(myChar, str.UTF8String)) 

[str isEqualToString:[NSString stringWithUTF8String:myChar]]; 

的核心基礎路線也是一種選擇:

CFStringRef myStr = CFSTR("some chars"); 

bool result = CFStringCompareWithOptions(myStr, ((__bridge CFStringRef)str),CFRangeMake(0,CFStringGetLength(myStr)), kCFCompareCaseInsensitive); 
+0

要麼你的意思是'strcmp',要麼你忘了'strncmp'的參數。 – rmaddy 2013-02-28 21:26:19

+0

謝謝!這是精確的我以後.. – HurkNburkS 2013-02-28 21:28:58

+0

@rmaddy如果你能相信它,autocorrect固定的。 – CodaFi 2013-02-28 21:42:10

0

您正在比較兩個不同的東西,所以你必須將一個轉換爲另一個。你轉換的方式取決於你。

4

更妙的是:

[str isEqualToString: @(myChar) ]; 

這並不比一個演員更差,你必然需要演員,因爲類型是不可通約的。

+0

實際上,這比演員陣容好得多。只有核心基礎類型的一個子集可以安全地來回轉移到ObjC對象 – CodaFi 2013-02-28 22:43:23

+0

CodaFi:因爲我懷疑原始海報來自C/C++背景,我的意思是「沒有比合法和安全的演員更糟糕」,這是仍然被棄用但被容忍。 (ObjC習慣更容忍鑄造,因爲運行時支持更好) – 2013-03-01 01:24:12