0

ここに私のコードの一部があります:

次のような stringWithFormat によって形成される文字列があります。

NSString * DestChoice = [NSString stringWithFormat:@"%@", Dest1String];

Dest1String は次のように形成されます。

NSString * Dest1String = [NSString stringWithFormat:@"%lX", [Dest1OutField integerValue]];

Dest1OutField は NSTextField です

テキスト フィールドに「10」を入力すると、DestChoice 文字列が「A」になるため、コードが機能します。テキスト フィールドに "11" を入力すると、DestChoice 文字列は "B" になります。これも適切です。しかし、「31」を入力すると「1F」になるはずですが、「EXC_BAD_ACCESS」でクラッシュします...

わかりません...誰かが私の道を照らすことができれば... :)

よろしくお願いします!


編集:

だから、私はいつも立ち往生しています...私は自分のコードを「より理解しやすい」ように編集し、サンプルではなく、私が使用する正確なコードを提供します:

したがって、次のような 2 つの文字列を作成します。

DestChoice = [NSString stringWithFormat:@"%lX", [DestField integerValue]];
SourceChoice = [NSString stringWithFormat:@"%lX", [SourceField integerValue]];

したがって、ユーザーは Source/Dest を Decimal 値で書き込みますが、それらは文字列の 16 進数としてストックされます。次に、ソースと dest を次のように再フォーマットするボタンがあります。

NSString * CommandReadyToSend  = [NSString stringWithFormat:@"X:0/%@,%@\r", DestChoice, SourceChoice];

私のコードは機能していますが、奇妙なことに、一部の値は CommandReadyToSend 部分で EXC_BAD_ACCESS を作成します...フィールド => DestChoice で A を受け取りました

しかし、テキストフィールドに 31 と書くと 1F になるはずが、EXC_BAD_ACCESS になってしまいます... 29 (10 進値) でも同じです

4

2 に答える 2

0

あなたのコードで私が見ている唯一の問題は

NSString * DestChoice = [NSString stringWithFormat:stringWithFormat:@"%@", Dest1String];

代わりに、使用できます

NSString * DestChoice = [NSString stringWithString:@"%@", Dest1String];

それ以外は問題ありません。私は正しい結果を得ています。

于 2012-05-10T10:45:32.480 に答える
0
NSString * DestChoice = [NSString stringWithFormat:stringWithFormat:@"%@%@", Dest1String];

で 2 つのオブジェクトをフォーマットすることを示して%@%@いますが、単一のオブジェクト ( Dest1String) しか指定していません。

于 2012-05-10T10:28:03.557 に答える