我正在写一个关于xcode的应用程序,我正在编写猜测按钮的代码,所以如果用户输入一个正确的字母,那么字母将出现在标签中单词的位置,长度。我正在使用characterAtIndex但是错误仍在继续,我并不能真正理解characterAtIndex的含义。到目前为止,这是我的代码。
@property (weak, nonatomic) IBOutlet UITextField *input; //user input
@property (weak, nonatomic) IBOutlet UILabel *Guessesinc; //number of incorrect guesses
@property (weak, nonatomic) IBOutlet UILabel *word; //the state of word as the user is guessing
@property (weak, nonatomic) NSString *rndw; //the correct and unknown word
- (IBAction)Guess;
- (IBAction)Guess
{
bool match = NO;
NSRange inputRange;
char charinput = [input characterAtIndex: 0];
for(int i = 0; i < self.rndw.length; i++)
{
char tempString = [self.rndw characterAtIndex: i];
if (charinput ==tempString)
{
match = YES;
inputRange = NSMakeRange(i, 1); //location, length
self.word.text = [self.word.text stringByReplacingCharactersInRange: inputRange withString: input];
}
输入characterAtIndex不起作用,但我不明白为什么。有没有办法解决这个问题。如果这段代码确实运行了,那么这部分代码应该产生类似这样的东西--d-。因此,例如,如果用户输入了d并且正确的单词是代码,则单词标签应该看起来像--d-。这段代码是否适用于它必须做的事情?
答案 0 :(得分:0)
这一行:
char charinput = [input characterAtIndex: 0];
......错了。
输入为UILabel
。 UILabel
不是NSString
。你可能想要这样的东西:
NSString *inputString = self.input.text;
if (inputString.length == 0) {
return; //Don't try to fetch a character from an empty string.
}
char charinput = [input characterAtIndex: 0];
然而,即使这样也没有多大意义,因为输入是UILabel,它是一个仅显示字段,而不是输入字段。如果您尝试从用户收集文字,则需要UITextField
或UITextView
。为了收集来自usr的单行文本,UITextField
可能是你想要的。
还不清楚为什么你首先尝试从输入UILabel
中的索引0获取字符,然后尝试从字符串self.rndw
中获取您似乎永远不会看到的字符初始化。我猜rdnw
是用户应该猜的词?
答案 1 :(得分:0)
这个答案做了一些猜测:
input
文本字段包含用户为当前猜测输入的字母。word
标签会显示公开字词的当前状态。rndw
是用户试图猜测的当前字词。鉴于您对代码的假设,您的Guess
方法已接近尾声。您最大的问题似乎是尝试从input
文本字段获取第一个字母。您正试图通过characterAtIndex:
而不是字段UITextField
属性(text
)来呼叫NSString
。您还尝试使用UILabel
替换子字符串。
这是您的Guess
方法,只需进行一些小的更改和清理。另请注意,标准惯例是变量和方法名称以小写字母开头,类名以大写字母开头。
- (IBAction)guess
{
bool match = NO;
unichar charinput = [self.input.text characterAtIndex:0];
for (NSInteger i = 0; i < self.rndw.length; i++)
{
char tempChar = [self.rndw characterAtIndex:i];
if (charinput == tempChar)
{
match = YES;
NSRange inputRange = NSMakeRange(i, 1); //location, length
self.word.text = [self.word.text stringByReplacingCharactersInRange:inputRange withString:self.rndw.substringWithRange:inputRange];
}