6

CHCSVParserCore データを CSV にエクスポートするために使用したいと思います。エンティティからすべての値を取得する方法は知っていますが、CSV に書き込む方法がわかりません。

でCSVに書き込む方法を教えてもらえますCHCSVParserか?

// Test listing all Infos from the store
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription 
                               entityForName:@"NoteLog" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (NoteLog *noteInfo in fetchedObjects) {

    NSLog(@"Name: %@", noteInfo.city );
    NSLog(@"Name: %@", noteInfo.country);
    NSLog(@"Name: %@", noteInfo.datetime);
    NSLog(@"Name: %@", noteInfo.notelatitude);
    NSLog(@"Name: %@", noteInfo.notelongtitude);
    NSLog(@"Name: %@", noteInfo.state);
    NSLog(@"Name: %@", noteInfo.text);        
}  
4

2 に答える 2

8

上記の回答は非推奨のようです。作成者はメソッドを別のメソッドに置き換えたようです。これは私にとってはうまくいきました。

NSOutputStream *stream = [[NSOutputStream alloc] initToMemory];
CHCSVWriter *writer = [[CHCSVWriter alloc] initWithOutputStream:stream encoding:NSUTF8StringEncoding delimiter:','];

for (Type *instance in fetchedResults) {
    [writer writeLineOfFields:@[instance.propertyA, instance.B]];
}
[writer closeStream];

NSData *buffer = [stream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];
NSString *output = [[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding];
于 2014-01-26T22:15:10.723 に答える
8

には、CSV ファイルを作成するためのCHCSVWriterいくつかの方法があります。

-writeField:オブジェクトを受け取り、その説明を (適切にエスケープした後に) CSV ファイルに書き込みます。必要に応じて、フィールド セパレータ (,) も書き込みます。空の文字列 (@"") または nil を渡して、空のフィールドを書き込むことができます。

-writeFields:オブジェクトのコンマ区切りおよび nil 終了リストを受け入れ、それぞれを -writeField: に送信します。

-writeLine現在の CSV 行を終了するために使用されます。-writeLine を呼び出さない場合、すべての CSV フィールドが 1 行になります。

-writeLineOfFields:オブジェクトのコンマ区切りおよび nil 終了リストを受け取り、それぞれを -writeField: に送信してから、-writeLine を呼び出します。

-writeLineWithFields:オブジェクトの配列を受け取り、それぞれを -writeField: に送信してから、-writeLine を呼び出します。

-writeCommentLine:文字列を受け取り、CSV スタイルのコメントとしてファイルに書き込みます。

ファイルへの書き込みに加えて、にCHCSVWriter直接書き込むために初期化できますNSString

このような何かがあなたのために働くはずです。

CHCSVWriter *writer = [[CHCSVWriter alloc] initForWritingToString];

for (NoteLog *noteInfo in fetchedObjects) {

    [writer writeLineOfFields:noteInfo.city, noteInfo.country, noteInfo.datetime, noteInfo.notelatitude, noteInfo.notelongtitude, noteInfo.state, noteInfo.text, nil];     
}  

NSLog(@"My CSV File: %@",writer.stringValue);
于 2012-05-13T13:59:23.083 に答える