在iOS模拟器中包含应用程序数据

时间:2017-12-06 22:49:30

标签: ios xcode ios-simulator

我有一个应用程序,记录并存储加速度计数据作为核心数据管理对象。我想在模拟器中包含一些样本保存的录音以在不同平台上测试应用程序,因为模拟器无法从加速度计记录。我已经成功地在构建方案中包含* .xcappdata文件,它可以在设备上运行,但模拟器提取回来是空的。

Apple documentation似乎表明在模拟器中包含应用数据是可能的,但我还没有让它工作。我已经测试了包括从另一台设备上保存的数据,并且工作正常。我没有收到任何错误消息,只是一个空的提取。

我知道我可以在应用程序中包含文本文件形式的数据,在启动时读取和格式化它们,并将它们保存为托管对象,但它会在项目中创建一堆附录代码和文件,而我宁愿更干净地工作。

2 个答案:

答案 0 :(得分:3)

我只是想通了,至少对于Xcode 9.2 / iOS 11.2模拟器来说,你可以设置(HOME / CFFIXED_USER_HOME)(我不确定那些是否真的有效)环境启动参数中的变量到.xcappdata / AppData的路径,如下所示(我使用SRCROOT相对路径只是为了说明可能性 - 它适用于任何其他类型的路径,如绝对路径等)。请注意,应用数据中的更改将直接反映在该文件夹中,因此,如果您不想这样做,则将其指向副本是有意义的。

Environment for .xcappdata

答案 1 :(得分:2)

您可以通过在终端窗口中运行xcrun simctl get_app_container <device> <bundle identifier> data来查找应用程序的数据容器路径。设备可以是名称(引用)或UDID(请参阅xcrun simctl list)。为此,必须运行相关的模拟器,并在其上安装应用程序的版本。

右键单击.appdata文件以显示包的内容。将从AppData / *中的文件夹中获取的核心数据文件复制到模拟目录中,然后在模拟器中启动应用程序。

Xcode当前没有GUI来管理模拟器中的容器,就像物理设备一样。如果您不介意,请在https://bugreport.apple.com/处提交增强请求,并在“设备”中提出要求。模拟器窗口。