ユーザー名と電子メールをcsvファイルに保存しようとしています。このアプリに名前とメールアドレスを入力するのは 50 人未満です。これらの詳細は csv ファイルに保存する必要があり、iPad でそのファイルに物理的にアクセスできる必要があります。助けてください!!
1 に答える
そのため、まず csv ファイルの形式を理解する必要があります。実はカンマと改行でデータが区切られたファイルだけなのでとても簡単です。
たとえば、人々の名前、電子メール、およびメッセージを保存する必要があるとします。csv ファイルは次のようになります。
John Doe, john@abc.com, Hello World!
ジェーン・ドウ、jane@abc.com、フー・フー
ここでは、改行で区切られた 2 人の人物と、コンマで区切られた情報があります。outputString
この混乱をすべて保持するには が必要です。
という名前の人の配列があるとしましょうpeopleArray
。私たちpeopleArray
はたくさんのを保持し、PeopleObjects
それぞれPeopleObject
がname
、email
、および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
でどこにあるかがわかります。