3

私は3つの配列を持っています。最初の配列には 2 番目と同じ文字列が含まれますが、3 番目の配列にはNSNumber's が含まれます。とにかく、トピックに戻ります...このデータを含むスプレッドシートのような csv (Excel/Numbers) ファイルを作成するにはどうすればよいですか。出来ますか?

これらは私の3つの配列です:

locationArray - 多くの文字列を含む dateArray - 多くの文字列を含む milesArray - 多くNSNumberのを含む

ただし、各配列には同じ量のオブジェクトが含まれているため、(テーブル ビューなどで) データをNSDictionary. チェーンのようなものです。

したがって、次のようになります。

NSDictionary *firstFlight = [NSDictionary dictionaryWithObjectsAndKeys:[locationArray objectAtIndex: 0], @"FlightName", [dateArray objectAtIndex: 0], @"FlightDate", [milesArray objectAtIndex: 0], @"FlightMiles", nil];

そして、その辞書にはフライトが含まれます (このテスト アプリの機能は、フライトを記録することです)。したがって、forループを使用してこれを列挙し、ループされた番号に置き換えるobjectAtIndex:と、フライトの多くの辞書を取得できます。

これで、私のデータ構造がどのように機能するかを理解できました。たとえば、次のように見えるようにExcel / Numbers / Spreadsheet CSVファイルを作成するにはどうすればよいですか(どのように見えるかのスクリーンキャプチャです):

(マイルデータは作成されたものです)

ここに画像の説明を入力

4

1 に答える 1

13

NSArray *firstArray, *secondArray, *thirdArray;

NSMutableString *csv = [NSMutableString stringWithString:@"Name,Date,Miles"];

NSUInteger count = [firstArray count];
// provided all arrays are of the same length
for (NSUInteger i=0; i<count; i++ ) {
    [csv appendFormat:@"\n\"%@\",%@,\"%d\"",
        [firstArray objectAtIndex:i],
        [secondArray objectAtIndex:i],
        [[thirdArray objectAtIndex:i] integerValue]
     ];
    // instead of integerValue may be used intValue or other, it depends how array was created
}

NSString *yourFileName = @"your filename";
NSError *error;
BOOL res = [csv writeToFile:yourFileName atomically:YES encoding:NSUTF8StringEncoding error:&error];

if (!res) {
    NSLog(@"Error %@ while writing to file %@", [error localizedDescription], yourFileName );
}

于 2012-09-30T08:37:24.913 に答える