我希望这是一个非常简单的问题。我只是想简单地将char转换为它的小写版本。这是我的代码:
- (IBAction)click:(id)sender {
[outputLabel setText:[inputField text]];
NSString* textFieldString = [inputField text];
NSLog(@"String is %@", textFieldString);
int textFieldLength = textFieldString.length;
UniChar* currChar = [textFieldString characterAtIndex:0];
NSLog(@"First char is %c", currChar);
NSLog(@"Length is %i", textFieldLength);
//currChar = [currChar lowercaseString];
//NSLog(@"Lowercase char is %c", currChar);
}
它给了我一个以下错误:
初始化使指针来自 行上没有强制转换的整数:
NSString* currChar = [textFieldString characterAtIndex:0];
但是,在查看文档时,它说方法characterAtIndex:
返回一个char,而不是整数。是什么给了什么?
答案 0 :(得分:4)
characterAtIndex
返回unichar
,unsigned short
。该行应
unichar currChar = [textFieldString characterATtIndex:0];
另外,您可以使用lowercaseString
获取整个NSString
的小写字母:
NSString *lowercase = [textFieldString lowercaseString];
答案 1 :(得分:2)
这是该功能的定义:
- (unichar)characterAtIndex:(NSUInteger)index
unichar是一种c数据类型,不是NSString *。你需要做
unichar currChar = [textFieldString characterAtIndex:0];
你得到的消息是由于它试图将unichar的整数值转换为指针值。
编辑:
顺便说一句,如果你真的需要一个NSString,那么最简单的方法可能是(干代码):NSString *currChar = [textFieldString substringWithRange:NSMakeRange(0,1)];