【发布时间】:2010-10-22 22:30:49
【问题描述】:
我刚刚完成了一个允许用户在表格视图中存储序列号列表的应用。应用程序存储数字的方式是存储在 NSMutableDictionary 中,然后写入持久性 plist 文件。该应用在测试期间运行良好。
但是,我刚刚构建并打包了应用程序以进行临时分发,现在当我从最终用户的角度测试应用程序时,数据没有被保存,即当我向我的 tableview 和输入一个新数字,新行没有被创建,也没有任何东西被写入字典。我使用以下代码写入 plist(假设 dict 已填充):
[dict writeToFile:[appDelegate dataFilePath] atomically:YES];
在我的 App Delegate 中的位置:
- (NSString *)dataFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:kFilename];
}
我使用这个从磁盘读取 plist:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:[appDelegate dataFilePath]];
这里有什么问题?
【问题讨论】:
-
kFilename是什么?您对writeToFile:atomically:的调用返回值是多少?您是否在代码中的其他任何地方使用此文件路径? (特别是写给它,还是不小心删除了?) -
抱歉,我将 kFilename 定义为 #define kFilename @"data.plist"。我唯一一次使用文件路径是在读/写这个 plist 时。有错吗?
标签: persistence distribution nsdictionary adhoc