Integer Casting处理Cocoa中的字符串

时间:2009-11-17 20:51:26

标签: objective-c cocoa nsstring

我希望这是一个非常简单的问题。我只是想简单地将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,而不是整数。是什么给了什么?

2 个答案:

答案 0 :(得分:4)

characterAtIndex返回unicharunsigned 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)];