我有一個關於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方法中。 –