【问题标题】:After packaging for ad-hoc distribution, iOS app data persistence doesn't work打包为 ad-hoc 分发后,iOS 应用程序数据持久性不起作用
【发布时间】: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


【解决方案1】:

如果你说你在持久化数据时遇到问题,你真的应该显示你将这个 plist 文件写入磁盘的代码,并显示你从磁盘加载它的代码。否则,您是在要求我们推测性地调试您的代码。

如果您在应用程序包中执行此操作,这是一个可以在模拟器中运行但在设备上运行时不可用的操作示例。

【讨论】:

    【解决方案2】:

    哦,我意识到了一些事情。我使用 4.2 beta SDK 进行了所有开发,现在运行使用 4.1 作为基础编译的应用程序,数据似乎没有持续存在! 4.2 中有什么新功能可以做到这一点吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多