的NSString比较的问题
我试图测试,看看是否一个NSString有字母“PDF”作为第一个3个字母:的NSString比较的问题
if ([[[profiles stringForKey:@"response"] characterAtIndex:0] isEqualToString:@"P"]) {
//TODO
}
我开始用这种方法来看看我至少可以缩小范围到那些以“P”开头的字符串,但是我得到这样的错误:“无效的接收器类型'unichar'”AND“投射到不同大小的整数的指针”
我得到这些错误是因为我我正在使用isEqualToString比较?它是否将终止零附加到“P”?我试图使用“==”比较,但我也得到了该方法的错误。
if ([profiles hasPrefix:@"PDF"]) {
NSLog(@"my string starts with \"PDF\"");
}
你想使用方法substringToIndex而不是characterAtIndex。 characterAtIndex返回一个unichar,它不是可以发送isEqualToString的objective-c对象。
这里的东西,为我工作:
NSString* testString = @"PDFDocument";
NSString* subString = [testString substringToIndex:3];
if ([subString isEqualToString:@"PDF"] == YES)
{
NSLog(@"same");
}
是的,hasPrefix也可以。 – ericg 2010-10-19 17:29:18
+1,但这会因多字节字符语言而失败。 – 2010-10-19 17:31:23
好了,'characterAtIndex'不返回'NSString'但'unichar'这种类型可能有没有方法'isEqualToString'。这个问题可能会帮助你:http://stackoverflow.com/questions/1354388/unichar-and-nsstring-how-interchangeable-are-these – 2010-10-19 17:22:44
不大可能;它没有。一个'unichar'是一个原始类型,因此不能有方法。幸运的是,'NSString'有更好的方法。 – 2010-10-19 17:26:19