xcode - 如何解释/导出大型 plist 数据
问题描述
我有大约 60K 行代码(每个 BBEdit)的 plist 文件,我正在尝试解码保存在这些文件中的一些数据点。我购买该软件的数据库公司不会将我的数据转换为我可以与竞争对手的产品一起使用的另一种格式(CSV 或其他格式),他们不会在内部进行转换并将导出的数据发送给我。我已经开始检查并更改一个值,然后查看 plist 并查看更改的位置,我试图弄清楚是否有办法找出整数引用的内容?我搜索了有关 Plists 如何工作的信息,似乎整数值引用了 plist 文档中较早的某个地方,但由于我没有编写这个程序,我也无法访问源代码或任何帮助公司,我 我将不得不对此进行逆向工程,以便我可以导出我感兴趣的数据点,因为我想保存大约 100K 值。皇家皮塔饼,但你有它。CF$UID 似乎是核心基金会的唯一标识符,但这就是我所拥有的。任何建议都是最有帮助的。
<dict>
<key>$archiver</key>
<string>NSKeyedArchiver</string>
<key>$objects</key>
<array>
...some 30-40K lines later
<dict>
<key>$class</key>
<dict>
<key>CF$UID</key>
<integer>153</integer>
</dict>
<key>stringValue</key>
<dict>
<key>CF$UID</key>
<integer>24</integer> <--- this is the value that's changing for my particular data point I'm interested in.
</dict>
......等等等等,然后在最后,像这样。
</array>
<key>$top</key>
<dict>
<key>root</key>
<dict>
<key>CF$UID</key>
<integer>1</integer>
</dict>
</dict>
<key>$version</key>
<integer>100000</integer>
</dict>
</plist>
解决方案
看起来所做的是NSKeyedArchiver
用于将 Objective-C 对象图序列化为 XML 格式的属性列表。如果没有此代码的源代码(或至少是头文件),这将是一个非常痛苦的过程。他们不会将其作为 CSV 提供给您的原因是这没有任何意义 - 这是一个深度嵌套的结构,它正在序列化应用程序的内存状态。
我的建议是要么放弃,要么给自己倒一杯烈性酒。这不打算由人类直接使用。
推荐阅读
- c++ - 使用 ReadProcessMemory() 将未知大小的字符数组或字符串读入 wstring
- webpack - Webpack 字符串替换 Ionic 3 / Cordova 5 Config.xml
- android - 标签栏和导航抽屉对齐
- python - 将列表复制到矩阵python3时出错
- javascript - 挖掘对象以满足条件并返回高于级别的属性
- vba - 从单元格中按名称搜索并打开 Word 文件
- reactjs - Storybook JS 与酶的交互测试 - 状态更改被覆盖
- python - python for with while inside
- python - 为什么即使我设置了随机种子,我也无法在 Keras 中获得可重现的结果?
- angular - 无法读取未定义 Angular 4 的属性“获取”