0

インデックスで文字を取得しようとすると、この警告が表示されます

初期化により、キャストなしで整数からポインタが作成されます

ここにコードがあります:

int random(arch4random()%(string.length));
NSString * char =[string charachterAtIndex:random];

ありがとうございます

4

3 に答える 3

2

NSStringから

- (unichar)characterAtIndex:(NSUInteger)index

方法です。NSStringではなく、unicharを返します。変数がNSStringポインターであると宣言していますが、unicharはバックグラウンドで整数として格納されます。

あなたのラインは

unichar character = [string charachterAtIndex:random];

補足として、変数charをCの予約キーワードとして呼び出すことはできません。

于 2012-04-23T21:16:39.890 に答える
0

[NSString characterAtIndex]は、文字列オブジェクトではなく文字を返します。したがって、charという名前の(または他の名前の)NSStringに割り当てることはできません。あなたは言うことができます:

unichar ch = [string characterAtIndex:random];
于 2012-04-23T21:15:45.240 に答える
0

基本的に、コンパイラは次のように警告しています。

NSString * name = [string characterAtIndex:random];

NSString *へのポインタを、返された文字(unsigned long)によって参照されるアドレスに格納しています。結果の文字をNSStringにする必要がある場合は、次のようなメソッドを使用する必要があります。

[NSString substringWithRange: NSRangeFromString([NSString stringWithFormat: @"%d-%d", random, 1])];

NSStringオブジェクトへのポインタを返します。

于 2012-04-23T21:25:18.430 に答える