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”崩溃......

我不明白...如果有人可以照亮我的路... :)

提前比!


编辑:

所以,我总是被困住......我将我的代码编辑为“更容易理解”,我给你我使用的确切代码,而不是示例:

所以,我做了两个这样的字符串:

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

因此,用户以十进制值写入源/目标,但它们以十六进制形式存储在字符串中,然后我有一个按钮可以重新格式化源和目标,如下所示:

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

我的代码正在工作,但是,奇怪的是,某些值在 CommandReadyToSend 部分产生了 EXC_BAD_ACCESS ... 示例:如果我在我的文本字段中写 1 => 我在 DestChoice 中收到 1(十六进制值)如果我在我的文本中写 10 field => 我在 DestChoice 中收到 A

但是如果我在文本字段中写 31,我应该得到 1F,但我得到一个 EXC_BAD_ACCESS... 与 29 相同(十进制值)

4

2 回答 2

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

您表示您想用 格式化两个对象%@%@,但您只提供一个对象 ( Dest1String)。

于 2012-05-10T10:28:03.557 回答
0

我在您的代码中看到的唯一问题是

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

相反,您可以使用

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

除此之外,没有任何问题。我得到了正确的结果。

于 2012-05-10T10:45:32.480 回答