2014-01-06 2 views
0

사용자가 3 개의 이미지를 평가할 수있는 그림 슬라이드 쇼 앱이 있습니다. 시청률이 같은 rated라는 NSMutableArray에 저장 얻을 :.csv 파일의 NSMutableArray 포맷 내용

2014-01-06 07:10:23.040 SlideShowSurvey[50425:70b] (
    1, <-- Rating for Picture 1 
    2, <-- Rating for Picture 2 
    3 <-- Rating for Picture 3 
) 

이 다음 코드를 사용하여 .csv 파일로 저장됩니다

-(void)saveRatings 
{ 
    NSString *picRatings = [NSString stringWithFormat:@"%@, \n",self.rated]; 
    // Find documents directory 
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *survey = [docPath stringByAppendingPathComponent:@"pictureRatings.csv"]; 
    // Create new file if none exists 
    if (![[NSFileManager defaultManager] fileExistsAtPath:survey]) 
    { 
     [[NSFileManager defaultManager] createFileAtPath:survey contents:nil attributes:nil]; 
    } 
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:survey]; 
    [fileHandle seekToEndOfFile]; 
    [fileHandle writeData:[picRatings dataUsingEncoding:NSUTF8StringEncoding]]; 
    [fileHandle closeFile]; 
} 

내가 다음 .CSV의 결과를 표시 할 수 있습니다 파일을 UITextView로 보내지 만 배열이 어떻게 구성되어 있는지 정확하게 표시합니다. 예를 들어 여러 결과는 다음과 같이 표시됩니다.

(
    1, 
    2, 
    3 
), 
(
    1, 
    2, 
    3 
), 
(
    1, 
    2, 
    3 
) 

배열을 1,2,3으로 저장하도록 포맷 할 수있는 방법이 있습니까? 그림 1, 그림 2, 그림 3과 같은 열 머리글을 추가 할 수 있습니까? 예를 들어, 나는 같은 UITextView 뭔가에 결과를 표시하고 싶습니다 :

Picture 1, Picture 2, Picture 3 
1,2,3 
1,2,3 
1,2,3 

나는 검색을 시도했지만이 답변을 찾을 수없는 것. 어떤 도움을 주셔서 감사합니다! 감사.

편집 :

을 :

 // Set column titles for .csv 
    NSArray *columnTitleArray = @[@"Picture 1", @"Picture 2", @"Picture 3"]; 

    NSString *columnTitle = [columnTitleArray componentsJoinedByString:@","]; 
    NSString *columnTitleToWrite = [columnTitle stringByAppendingString:@"\n"]; 

    // Separate ratings into cells 
    NSString *picRatings = [rated componentsJoinedByString:@","]; 
    NSString *picRatingsToWrite = [picRatings stringByAppendingString:@"\n"]; 

    // Find documents directory 
.. 

은 그런 방법이 추가가 반드시 열 머리글은 새 파일이 생성 될 때 설정 한 경우에만 있습니다 만들 : 나는 다음과 같은 코드를 사용하여, jrturton의 솔루션이 덕분에 해결 한 여기

// Create new file if none exists 
    if (![[NSFileManager defaultManager] fileExistsAtPath:survey]) 
    { 
     [[NSFileManager defaultManager] createFileAtPath:survey contents:nil attributes:nil]; 

     // Set title for new file 
     NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:survey]; 
     [fileHandle writeData:[columnTitleToWrite dataUsingEncoding:NSUTF8StringEncoding]]; 
    } 
.. 
+0

사용자 정의 UITableCellView를 디스플레이 – Retro

+0

에 사용하지 않으려 고했으나 .csv 파일이 아닌 NSMutableArray 자체에서 결과를로드하는 방법 만 알고있었습니다. 나는 Objective-C에 대해 아주 새로운 것이다. .csv를'UITableView'에로드하는 방법을 보여주는 코드 예제를 알고 있습니까? – rosshump

답변

0
NSMutableString *csv = [NSMutableString string]; 

NSString *label = @"\n"; 

[csv appendFormat:@",", label]; 

NSString *picRatings = [rated componentsJoinedByString:csv]; 

에 데이터를 사용할 수있는 방법을 보면, 이것은 아마도 사용하지 label 때문에 경고가 제기 될 것입니다. 이 경우에는 변경할 문자열이 필요하지 않습니다.

가 할 쉼표로 구분하여 배열의 내용을 얻으려면이 :

NSString *picRatings = [rated componentsJoinedByString:@","]; 

당신이 원하는 것, 그래서 당신은 또한,이 문자열의 끝에 새 줄을 추가해야합니다

NSString *picRatingsToWrite = [picRatings stringByAppendingString:@"\n"]; 

파일에이 문자열을 쓰면 좋을 것입니다.

+0

완벽한! 귀하의 솔루션은 내가 필요한 것입니다. 감사합니다!마지막으로 필자가 원했던 것은 그림 1, 그림 2, 그림 3과 같은 열 머리글을 사용하는 것입니다. 내가 어떻게이 일을 성취 할 수 있는지 아십니까? 도와 주셔서 정말로 고맙습니다. – rosshump

+0

그렇게하기 위해 이미 문자열이 없으면 그 문자열을 파일에 쓰거나 (\ trailing \ n), 최초의 등급 문자열의 시작 부분에 추가하십시오. – jrturton

+0

Brilliant, 파일을 만들 때 열 머리글을 설정할 수 있었고이를 보여주기 위해 내 게시물을 업데이트했습니다. 모든 도움을 주셔서 감사합니다! – rosshump

1

훨씬 쉬운 방법입니다 :

NSMutableString *csv = [NSMutableString string]; 

NSString *label = ...; 

[csv appendFormat:@"%@,\n", label]; 

NSNumber *keyNum = ...; 

[csv appendFormat:@"%d,%d\n", [keyNum intValue], [countNum intValue]]; 

NSString *filename = @"counts.csv"; 

NSError *error; 

[csv writeToFile:filename atomically:YES encoding:NSUTF8StringEncoding error:&error]; 
+0

내 업데이트 된 게시물을 참조하십시오. 일부 코드를 사용하여 시도한 솔루션으로 편집했지만 제대로 작동하지 않습니다. 나는 당신의 코드의 다른 부분이'* keyNum'과'countNum'과 같은 것이 확실하지 않다. 나 좀 도와 줄 수있어? – rosshump

0

사용이 파서와 데이터를 얻을 수 배열에 당신은 당신이 appendFormat 위의 코드에서 일을 할 것으로 기대 모르겠어요 UITabelViewCellhttps://github.com/davedelong/CHCSVParser

+0

CSV 파서에 대해 생각해 봤지만이 앱은 매우 간단하며 .csv 파일에 소량의 데이터 만 저장하므로 파서를 구현하지 않기로 결정했습니다. 그래도 답장을 보내 주셔서 감사합니다. – rosshump