2010-10-19 128 views
0

我試圖測試,看看是否一個NSString有字母「PDF」作爲第一個3個字母:的NSString比較的問題

if ([[[profiles stringForKey:@"response"] characterAtIndex:0] isEqualToString:@"P"]) { 
      //TODO 
     } 

我開始用這種方法來看看我至少可以縮小範圍到那些以「P」開頭的字符串,但是我得到這樣的錯誤:「無效的接收器類型'unichar'」AND「投射到不同大小的整數的指針」

我得到這些錯誤是因爲我我正在使用isEqualToString比較?它是否將終止零附加到「P」?我試圖使用「==」比較,但我也得到了該方法的錯誤。

+0

好了,'characterAtIndex'不返回'NSString'但'unichar'這種類型可能有沒有方法'isEqualToString'。這個問題可能會幫助你:http://stackoverflow.com/questions/1354388/unichar-and-nsstring-how-interchangeable-are-these – 2010-10-19 17:22:44

+1

不大可能;它沒有。一個'unichar'是一個原始類型,因此不能有方法。幸運的是,'NSString'有更好的方法。 – 2010-10-19 17:26:19

回答

4
if ([profiles hasPrefix:@"PDF"]) { 
    NSLog(@"my string starts with \"PDF\""); 
} 
2

你想使用方法substringToIndex而不是characterAtIndex。 characterAtIndex返回一個unichar,它不是可以發送isEqualToString的objective-c對象。

這裏的東西,爲我工作:

NSString* testString = @"PDFDocument"; 
NSString* subString = [testString substringToIndex:3]; 

if ([subString isEqualToString:@"PDF"] == YES) 
{ 
    NSLog(@"same"); 
} 
+0

是的,hasPrefix也可以。 – ericg 2010-10-19 17:29:18

+1

+1,但這會因多字節字符語言而失敗。 – 2010-10-19 17:31:23