Dogというカスタムクラスのオブジェクトを使用して可変配列を作成し、それをiPhoneのドキュメントディレクトリ内のファイルに保存して、後でファイルから読み取り、アプリケーションに戻そうとしています。NSArrayのwriteToFile:atomically:メソッドを使用してこれを実行しようとしていますが、このメソッドの結果をテストすると、常にNOの値が返され、ファイルは作成されず、配列は保存されません。これについていくつか質問があります。アレイをどのファイル形式に保存する必要がありますか?配列をファイルにアトミックに書き込むとはどういう意味ですか?配列がそこに保存されたら、ファイルの内容を読み取るにはどうすればよいですか?そして最も重要なのは、配列が指定されたパスでファイルに保存されないのはなぜですか?よろしくお願いします。アプリのviewDidLoadメソッド内で使用しているコードは次のとおりです。
NSString *documentsDir = [NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0];
dogFilePath = [documentsDir stringByAppendingPathComponent:@"arrayDogsFile.plist"];
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSLog(@"%@",dogFilePath);
Dog *dog1 = [[Dog alloc] init];
dog1.name = @"Dog1";
Dog *dog2 = [[Dog alloc] init];
dog2.name = @"Dog2";
Dog *dog3 = [[Dog alloc] init];
dog3.name = @"Dog3";
NSMutableArray *arrayDogs = [NSMutableArray array];
[arrayDogs addObject: dog1];
[arrayDogs addObject: dog2];
[arrayDogs addObject: dog3];
//Sorts the array in alphabetical order according to name – compareDogNames: is defined in the Dog class
arrayDogs = (NSMutableArray *)[arrayDogs sortedArrayUsingSelector:@selector(compareDogNames:)];
if ([arrayDogs writeToFile:dogFilePath atomically:YES])
NSLog(@"Data writing successful");
else
NSLog(@"Data writing unsuccessful");