添加到NSMutableArray

rd4*_*d42 3 arrays iphone

我想要添加到每个迭代我有2个双打,NSMutableArray但我似乎无法实现它.

NSMutableArray *touchArray = [[NSMutableArray alloc]init];
[touchArray addObject:[NSString stringWithFormat:@"%d", "%d", tapTotal, touchBegin]];      
NSLog(@"array: %@", touchArray);
Run Code Online (Sandbox Code Playgroud)

控制台打印14108作为数组的值,我不知道它来自何处,它不是变量的值.并且XCode在前两行抱怨,"touchArray'的本地声明隐藏了实例变量.我知道我至少做了一件事wronl

谢谢你的帮助,罗伯特

Jes*_*her 6

首先,'本地声明问题':你已经在其他地方声明了touchArray,因此你不需要重新声明,只需(可能)初始化就像这样 touchArray = [[NSMutableArray alloc] init];

其次:双重问题:有很多:你在数组中添加一个字符串,而不是两个双打.要添加一个double,您需要先将它包装在NSNumber中:

[touchArray addObject:[NSNumber numberWithDouble:firstDouble]];
[touchArray addObject:[NSNumber numberWithDouble:secondDouble]];
Run Code Online (Sandbox Code Playgroud)

你也想打印出数组中的每个变量来检查它我会相信,而不是数组对象本身.为了这:NSLog(@"array[0] = %g", [[touchArray objectAtIndex:0] doubleValue]

编辑答案澄清:我的回答假设海报想要分别向数组添加两个双打,而不是一个包含两个值的字符串.以为我可能会清楚,因为肯尼和我有不同的消息:)

这里有很多错误,所以我建议你可以尝试阅读一本客观的c/iphone开发书来了解更多信息.

  • 更简单:打印`NSNumber`对象:`NSLog(@"array [0] =%@",[touchArray objectAtIndex:0])`.更简单:只需打印整个数组,就像提问者建议的那样:`NSLog(@"array =%@",array)`.` - [NSArray description]`以伪oldstyle-plist格式打印出其内容. (2认同)

ken*_*ytm 5

+stringWithFormat:错了.只有第一个字符串可以是格式字符串.其余的将作为参数传递给格式.在您的代码中,格式字符串是"%d",因此运行时将期望正好1个整数.它看到第二个地址"%d"是14108,所以它将打印为整数.

正确的代码应该是:

[NSString stringWithFormat:@"%g %g", tapTotal, touchBegin]
Run Code Online (Sandbox Code Playgroud)

(通常,%dint,%uunsigned,%gdoubleCGFloat,%@→Objective-C对象等)