2012-11-20 3 views
0

iOS 응용 프로그램에 대한 조언을 찾고 있습니다.NSMutableArray CSV 파일로 내보낼 때 메타 데이터

기본적으로 내 앱이하는 일은 일정 기간 내에 특정 이벤트를 기록하는 CSV 파일을 생성하는 것입니다. 따라서 사용자는 버튼을 누를 수 있으며 "시간 T에 X 유형의 이벤트가 발생했습니다"라는 메시지가 로그에 추가됩니다.

이 방법은 NSString을 저장하는 NSMutableArray를 유지 관리하는 것입니다. 각 이벤트는 NSMutableArray에 문자열을 추가합니다.

사용자가 세션을 완료하면 파일을 "내보낼"수 있습니다. NSMutableArray의 writeToFile을 사용하고 있습니다. 그런 다음 전자 메일 인터페이스를 사용하여 해당 파일을 대상 전자 메일로 CSV로 보냅니다.

생성 된 CSV 파일에 일부 메타 데이터가있는 것을 제외하면 모두 작동합니다. 특히, 내가 본 파일의 맨 위와 Excel에서 열 때 셀의 각 행의 시작 부분에 있다고 생각합니다.

데이터 구조 (NSMutableArray) 또는 데이터 형식 (NSString)에 내재 된 것이 있습니까? 원시 데이터를 얻는 방법이 있습니까?

필요하다면 코드를 업로드 할 수 있습니다. (저는 현재 작업중인 컴퓨터 근처에 있지 않으므로이 메타 데이터를 보는 것을 멈추게 할 수있는 간단한 방법이 있는지 물을 테스트하고 있습니다).

감사합니다.

+0

writeToFile 메서드는 csv 파일이 아닌 plist 파일을 생성합니다. – Felix

+0

좋아, CSV 파일에이 파일을 쓸 수있는 방법이 있습니까? 현재 확장 기능을 변경하고 있습니다 (원유, 알고 있습니다). –

답변

0

CSV는 매우 간단한 형식입니다. 세미콜론으로 문자열을 분리 한 다음 NSOutputStream을 사용하여 모든 것을 파일에 쓸 수 있습니다.

NSOutputStream* csvoutput = [NSOutputStream outputStreamToFileAtPath:filepath append:NO]; 
[csvoutput open]; 
for (NSString* str in array) { 
    NSString* tempStr = [str stringByAppendingString:@"\n"]; //new line 
    NSData *strData = [tempStr dataUsingEncoding:NSUTF8StringEncoding]; 
    [csvoutput write:(uint8_t *)[strData bytes] maxLength:[strData length]]; 
} 
[csvoutput close]; 

당신은 더 나은 모델 클래스 (Event)를 만들고 이벤트 인스턴스 대신 문자열 배열을 채우기 :

이 코드는 이미 CSV 행으로 문자열 배열을 가정합니다. 그게 더 깨끗하고 효율적입니다. 그런 다음 파일로 내보낼 때 CSV 문자열을 만듭니다.

관련 문제