我开始将NSArray存储在文件中,但作为回复我一直都是nil ......
Apple文档说nil意味着你的文件不存在,但我很确定我的文件(我可能没有正确构建我的路径)......
以下是我用来将NSArray存储在文件中的代码......
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"scorecards" ofType:@"dgs"];
NSArray *myArray = [[NSArray alloc] initWithObjects:@"J", @"ANA", @"MY", @"GDON", nil];
[myArray writeToFile:filePath atomically:YES];
NSArray *mynewArray = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"%@", [mynewArray objectAtIndex:2]);
我还截取了Xcode的截图,向大家展示我的文件确实存在......
该文件明确保存在 ScorecardsSaved 组中,该文件名为记分卡,扩展名为 dgs (我为我做的事情)具体应用 - Dot Golf Scorecard - dgs)
答案 0 :(得分:2)
实际上,您的文件路径使用pathForResource
方法,因此它将指向应用程序包中的一个不可写的位置。
相反,您必须写入设备/模拟器上的应用程序文档目录。
NSURL *documentsDirectory =
[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] lastObject];
NSURL *fileURL = [documentsDirectory
URLByAppendingPathComponent:@"storecards.dgs"];
因此,如果您的文档包版本包含一些种子数据,请先将其复制到app documents目录。
答案 1 :(得分:1)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:FILE_NAME];
[myArray writeToFile:filePath atomically:YES];