0

ユーザー名と電子メールをcsvファイルに保存しようとしています。このアプリに名前とメールアドレスを入力するのは 50 人未満です。これらの詳細は csv ファイルに保存する必要があり、iPad でそのファイルに物理的にアクセスできる必要があります。助けてください!!

4

1 に答える 1

4

そのため、まず csv ファイルの形式を理解する必要があります。実はカンマと改行でデータが区切られたファイルだけなのでとても簡単です。

たとえば、人々の名前、電子メール、およびメッセージを保存する必要があるとします。csv ファイルは次のようになります。

John Doe, john@abc.com, Hello World!

ジェーン・ドウ、jane@abc.com、フー・フー

ここでは、改行で区切られた 2 人の人物と、コンマで区切られた情報があります。outputStringこの混乱をすべて保持するには が必要です。

という名前の人の配列があるとしましょうpeopleArray。私たちpeopleArrayはたくさんのを保持し、PeopleObjectsそれぞれPeopleObjectnameemail、およびmessageプロパティを持っています。

私たちはたくさんの人々とそれぞれの情報を持っています。を作成しましょうoutputString

NSString *outputString = @"";

for (PeopleObject *person in peopleArray) {
       outputString = [outputString stringByAppendingFormat:@"%@,%@,%@\n", person.name, person.email, person.message];
}

これにより、適切にフォーマットされた文字列が作成されます。したがって、これらすべてをファイルに書き込む必要があります。

最初にドキュメント ディレクトリが必要です。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDirectory = [paths objectAtIndex:0];

ここdocDirectoryで、ファイルを書き込む場所を教えてくれます。次に、ディレクトリにファイル名を追加する必要があります。

NSString *outputFileName = [docDirectory stringByAppendingPathComponent:@"People.csv"];

これで、フォーマットされた csv 文字列とそれを保存する場所ができました。最後の部分は、ファイルに書き出すことです。

//Create an error incase something goes wrong
NSError *csvError = NULL;

//We write the string to a file and assign it's return to a boolean
BOOL written = [outputString writeToFile:outputFileName atomically:YES encoding:NSUTF8StringEncoding error:&csvError];

//If there was a problem saving we show the error if not show success and file path
if (!written) 
    NSLog(@"write failed, error=%@", csvError);
else
    NSLog(@"Saved! File path =", outputFileName);

ファイルに再度アクセスする必要がある場合は、ファイルを保存するだけoutputFileNameでどこにあるかがわかります。

于 2012-08-17T17:01:33.230 に答える