2011-09-20 5 views
0

NSMutableArray에 관한 질문이 있고 그것은 전역적인 것으로 alloc/init입니다.NSMutableArray에 가속도계 값을 채우시겠습니까?

수행 할 작업 : 이진 변수 "permission"이 true로 설정되어있는 한 가속 값을 NSMutableArray에 채우십시오. 나는 또한 허락에 대한 허락을 설정할 때 배열에서 '녹음'을 멈추고 배열을 전화로 이메일로 보낸 파일에 쓰려고한다. 나는 하루 종일 (나는 가장 경험이 많은 코더가 아닐지도 모른다. ")이 포럼을 사용하여 첨부 파일에 아무런 파일 (이 설정은 nil, 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의 주파수를 설정한다.)

어떤 제안이라도?

xx!

답변

0

문제는 거의 없지만 중요합니다. 처음에는 변경된 배열을 초기화하기 위해

NSMutableArray *dataArray; 

을 입력했습니다. 문제는, 이것은 단지 객체를위한 RAM에 약간의 공간을 만들고 그것을 초기화하지 않는다는 것입니다. 그래서, 당신은 객체를 초기화하지 않았습니다. 그래서 그것은 제로입니다. 컴파일하고 실행하고 작동해야

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

변경 : 여기에 올바른 방법입니다.

+0

빠른 도움말 주셔서 감사합니다. 나는 전에 컴파일러 오류가 발생했습니다. "초기화 요소는 컴파일 타임 상수가 아닙니다." – coernel

+0

시작/정지를 단추 하나에 넣을 수 있습니까? 하나의 함수 (플러스 가속도계)와 배열을 어떻게 든 다른 방식으로 값을 검색? Java는 FileWriter를 제공합니다. Obj.C 2.0에서 비슷한 것을 사용할 수 있습니까? – coernel

+0

당신은 코드를 정의했다. BOOL permission = NO; // 레코딩 상태/레코딩 상태가 아닌 키 변수 int i = 0; // dataArray에서 장소를 결정하는 데 사용됩니다. NSMutableArray * dataArray; // 축 값이 여기에 덤프 됨 .m 파일의 시작 부분에 ' . 네가 잘못한 것을 내가 아는 것 같아. 이 코드를 - (id) init 메소드로 옮겨보십시오. –

관련 문제