我有一个关于NSMutableArray的问题,它是alloc/init作为一个全局事物。用Accelerometervalues填充NSMutableArray?
我想要做的是:只要二进制变量“permission”设置为true,就可以使用加速度值填充NSMutableArray。当我将权限设置为false时,我进一步想要停止阵列中的“录制”,然后将数组写入文件,然后通过电子邮件发送电子邮件。我编码整天(我可能不是最有经验的编码器“,并修复许多麻烦,如权限设置,没有附件中的文件(这是零,tadaaa)使用这个论坛,但对于这个问题,我似乎无法找到。解决
的一点是,附件是零,我不能想到了解决办法
我在.m文件的开头如下:
BOOL permission = NO; // key variable to enter recording/not recording state
int i = 0; //used to determine place in dataArray
NSMutableArray *dataArray; // axis values get dumped in here
启动录音,
- (void)recordStart { //setting permission to yes
permission = YES;
}
这允许加速计:UIAccelerometer填充dataArray中:
(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
if (permission == YES) {
// NSLog(@"%f"@"%f"@"%f",acceleration.x,acceleration.y,acceleration.z);
NSString *valueString = [NSString stringWithFormat:@"%f, %f,
%f",acceleration.x,acceleration.y,acceleration.z];
[dataArray addObject:valueString];
// NSLog(@"%i",i);
NSLog(@"Array Count: %d", [dataArray count]);
}
}
的的NSLog总是返回0,因此该数组为空和止动方法不能写入文件阵列,因为它是零:
- (void)recordStop { //setting permission to no
NSLog(@"Array Count: %d", [dataArray count]);
[[dataArray componentsJoinedByString:@",\n"] writeToFile:[self setFileLocation] atomically:YES encoding:NSUTF8StringEncoding error:NULL];
//代码ommitted
我是否需要的Alloc阵列其他地方,那么全球范围内?我不能在加速度计功能中做到这一点,因为它会重新做它每次触发(我设置100Hz的频率)
任何建议吗?
thx!
感谢您的快速帮助,我曾尝试过,但我得到一个编译器错误:“初始化元素不是一个编译时常量” – coernel
是否可能将启动/停止在一个按钮上,因此使用有一个函数的数组(加上加速度计),并以某种方式以不同的方式检索值? Java提供FileWriter,Obj.C 2.0有没有类似的东西? – coernel
你说你定义了代码 BOOL权限= NO; //键入变量以进入记录/不记录状态 int i = 0; //用于确定dataArray中的位置 NSMutableArray * dataArray; //轴值在这里' '在.m文件的开头被转储。我想我知道你做错了什么。尝试将该代码移动到 - (id)init方法中。 –