用Accelerometervalues填充NSMutableArray?

时间:2011-09-20 05:44:27

标签: nsmutablearray nsarray accelerometer

我有一个关于NSMutableArray的问题,它的alloc / init是一个全局的东西。

我想做什么:只要二进制变量“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,因此数组为空并且stop方法无法将数组写入文件,因为它是nil:

    - (void)recordStop { //setting permission to no

NSLog(@"Array Count: %d", [dataArray count]);

[[dataArray componentsJoinedByString:@",\n"] writeToFile:[self setFileLocation] atomically:YES encoding:NSUTF8StringEncoding error:NULL];

//代码省略

我是否需要在其他地方分配数组然后全局?我无法在加速度计中执行此操作:因为它会在每次触发时重新执行此操作(我设置的频率为100Hz)

有什么建议吗?

THX!

1 个答案:

答案 0 :(得分:0)

你的问题很少但很重要。一开始,你做了

NSMutableArray *dataArray;

初始化你的可变数组。问题是,这只会在RAM中为对象创建一些空间而不是初始化它。所以,你没有初始化对象,所以它是零。这是正确的方式:

NSMutableArray *dataArray = [[NSMutableArray alloc] init];

更改,编译并运行它,它应该可以工作。