我正在尝试使用名为 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");