0

我开始将 NSArray 存储在文件中,但我一直得到 nil 作为响应...

苹果文档说 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 的屏幕截图,向你们展示我的文件确实存在......

Xcode 截图

该文件清楚地保存在ScorecardsSaved组中,该文件称为scorecards,扩展名为dgs(我为我的特定应用程序编写的东西 - Dot Golf Scorecard - dgs)

4

2 回答 2

2

实际上,您的文件路径使用该pathForResource方法,因此它将指向您的应用程序包中的一个位置,该位置不可写。

相反,您必须写入设备/模拟器上的应用程序文档目录。

NSURL *documentsDirectory = 
   [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory 
     inDomains:NSUserDomainMask] lastObject];
NSURL *fileURL = [documentsDirectory 
   URLByAppendingPathComponent:@"storecards.dgs"];

因此,如果您的文档的捆绑版本包含一些种子数据,请先将其复制到应用程序文档目录。

于 2012-06-18T21:16:18.997 回答
1
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:FILE_NAME];

[myArray writeToFile:filePath atomically:YES];
于 2012-06-18T21:27:25.843 回答