0

私はIOS開発に不慣れで、簡単なプログラムを作成しています。これはハングマンゲームです。plist ファイルからランダムな文字列を選択したかった (完了)。ここで、(テキスト フィールドからの) ユーザー入力テキストを比較し、plist からランダムに選択した文字列と比較したいと考えています。

MainViewController.m はユーティリティであるため、これが私のコードです。現在、MainView のみが使用されています。

#import "MainViewController.h"
#import "WordListLoad.h"
@interface MainViewController ()
@end
@implementation MainViewController
@synthesize textField=_textField;
@synthesize button=_button;
@synthesize correct=_correct;
@synthesize UsedLetters=_UsedLetters;
@synthesize newgame=_newgame;
- (IBAction)newg:(id)sender
{
[self start];
}
- (void)start
{
NSMutableArray *swords = [[NSMutableArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"swords" ofType:@"plist"]];
NSLog(@"%@", swords);
NSInteger randomIndex = arc4random() % [swords count];
NSString *randomString = [swords objectAtIndex:randomIndex];
NSLog(@"%@", randomString);


}

これは、私がcharacterAtIndexを試したチェックを実装したい場所です.forステートメントを使用して文字列を体系的にチェックするために、文字列に配置されたハードコードされた文字列にそれを機能させることができないようです.

- (void)check: (NSString *) randomString;
{
//NSLogs to check if the values are being sent

NSLog(@"2 %@", self.textField.text);

}
- (IBAction)go:(id)sender
{
[self.textField resignFirstResponder];

NSLog(@"1 %@", self.textField.text);
[self check:(NSString *) self.textField];
_textField.text = nil;


}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

[self start];

}
4

3 に答える 3

1

2 つの文字列を比較するには: [string1 equalsToString:string2]. string1 が string2 と等しい場合、これは true を返します。UITextfield に含まれる文字列を取得するには: textfield.text.

于 2013-07-01T15:18:04.047 に答える
0

チェックメソッドでは、テキスト文字列ではなく、UITextfield 自体を送信しています。代わりに試してください:

[self check: self.textfield.text];

plist からランダムな文字列を保存するために NSString プロパティを作成する必要もあります。

クラスのインターフェースで次のように宣言します。

@property (nonatomic,strong) NSString* randomString;

開始メソッドで:

self.randomString = [swords objectAtIndex:randomIndex];

チェックメソッドで:

return [self.randomString isEqualToString:randomString];
于 2013-07-01T15:19:24.523 に答える
0

これが絞首刑執行人ゲームであることを考えると、指定された文字列に単一の文字が含まれているかどうかを確認しようとしていると思います。したがって、 equalsToString: は必要なものではありません。

代わりに、おそらくrangeOfString:options:を使用することをお勧めします。

if ([randomString rangeOfString:self.textfield.text options:NSCaseInsensitiveSearch].location != NSNotFound){
    // Do stuff for when the letter was found
}
else {
    // Do stuff for when the letter wasn't found
}

また、Patrick Goley が指摘したように、textfield.text 値を使用して文字列を取得していることを確認する必要があります。隠し単語として使用する最初の単語を保存する場合と同じです。

アプリを機能させるためにクリーンアップする必要があるその他の小さなコードの問題 (関数ヘッダーのセミコロンなど) もいくつかあります。

編集:文字列呼び出しの範囲が実際にテキストフィールドのテキストを使用するようにし、大文字と小文字を区別しないようにしました(単語が小文字のときにユーザーが大文字を入力したとき、またはその逆のときに誤ったリターンを防ぐため)。NSString の rangeOfString:options のドキュメントへのリンクも含まれています。

于 2013-07-01T20:44:27.010 に答える