2010-10-19 81 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