core-data - CloudKit JS 反序列化 [Double] 可转换类型数据
问题描述
我跟着如何将数组保存到CoreData?在我的数据模型中创建一个可转换字段,并将该类型的记录保存到 CloudKit。我现在想从 Web 应用程序访问这些数据。我怎样才能反序列化它?
JS 对象响应中的数据如下所示:
YnBsaXN0MDDUAQIDBAWKi4xYJG9iamVjdHNYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3CvED8GB0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4RVJG51bGzSCAkKC1YkY2xhc3NaTlMub2JqZWN0c4A+rxA8DA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHgAKAA4AEgAWABoAHgAiACYAKgAuADIANgA6AD4AQgBGAEoATgBSAFYAWgBeAGIAZgBqAG4AcgB2AHoAfgCCAIYAigCOAJIAlgCaAJ4AogCmAKoArgCyALYAugC+AMIAxgDKAM4A0gDWANoA3gDiAOYA6gDuAPIA9Iz+ChKQAAAAAIz+rvBuAAAAAIz+ShMwAAAAAI7+NhhwAAAAAI7+YXh8AAAAAI7+YF8YAAAAAI79qBWAAAAAAIz+Uds6AAAAAIz+dRGaAAAAAI79v+awAAAAAIz+EOhMAAAAAI79muLgAAAAAI7+2fcpgAAAAIz+hwSYAAAAAIz+W1zMAAAAAIz+bdJ8AAAAAI7+ZfB8AAAAAI7+kFm6AAAAAIz+mHaYAAAAAIz9C6PAAAAAAI7+Qp4pAAAAAIz+3tR4AAAAAIz+Tl/eAAAAAI7+kd7agAAAAIz+xC5YAAAAAI7+OmbOAAAAAIz+01GcAAAAAIz+enIRAAAAAIz+XrCYAAAAAI79dnTwAAAAAI7+tWjPgAAAAIz+fRwTAAAAAIz93ZtIAAAAAIz+jFAwAAAAAI7+kYxTAAAAAI7+rht5AAAAAIz+EU0XAAAAAI7+hufMAAAAAI7+JPgAAAAAAIz+SL45AAAAAI7+lrQiAAAAAI7+howoAAAAAI7+Ld1AAAAAAI79jN2QAAAAAI7+fFdtAAAAAI7+I7FiAAAAAIz+FCQuAAAAAIz89MOAAAAAAI79NwfgAAAAAI7+I1msAAAAAIz+K2VEAAAAAIz9wqKkAAAAAI7+I4AAAAAAAIz9PhlgAAAAAI78stgAAAAAAI7+KxJYAAAAAIz9CRuAAAAAAIz+BPHIAAAAAIz9+P6EAAAAAIz9nB14AAAAA0oWGh4hYJGNsYXNzZXNaJGNsYXNzbmFtZaKIiVdOU0FycmF5WE5TT2JqZWN0EgABhqBfEA9OU0tleWVkQXJjaGl2ZXLRjY5Ucm9vdIABAAgAEQAaACMALQAyAHQAegB/AIYAkQCTANIA1ADWANgA2gDcAN4A4ADiAOQA5gDoAOoA7ADuAPAA8gD0APYA+AD6APwA/gEAAQIBBAEGAQgBCgEMAQ4BEAESARQBFgEYARoBHAEeASABIgEkASYBKAEqASwBLgEwATIBNAE2ATgBOgE8AT4BQAFCAUQBRgFIAUoBUwFcAWUBbgF3AYABiQGSAZsBpAGtAbYBvwHIAdEB2gHjAewB9QH+AgcCEAIZAiICKwI0Aj0CRgJPAlgCYQJqAnMCfAKFAo4ClwKgAqkCsgK7AsQCzQLWAt8C6ALxAvoDAwMMAxUDHgMnAzADOQNCA0sDVANdA2YDawN0A38DggOKA5MDmAOqA60DsgAAAAAAAAIBAAAAAAAAAI8AAAAAAAAAAAAAAAAAAAO0
我几乎有与https://developer.apple.com/forums/thread/70286相同的问题,但那里也没有答案。
解决方案
Transformables 使用NSKeyedArchiver
. 对于 CloudKit,它们是 base64 编码的。要对此进行解码,您需要
- Base64对其进行解码,得到一个二进制plist。
- 将二进制 plist 解码为可识别的内容。
为了让您了解那里有什么,您可以将该字符串保存到 Mac 上的文件中并查看一下。如果将其保存到名为 的文件array.txt
中,则可以使用
base64 -d < array.txt > array.plist
您不能array.plist
仅通过查看它来阅读,因为它使用二进制编码。但是您可以将其转换为 XML 以查看其中的内容
plutil -convert xml1 array.plist
结果可以在这里找到:https ://gist.github.com/atomicbird/d5ca330c02cff95bbee7ee5d594f47f4
NSKeyedArchiver
环顾四周,有一些用于二进制 plist 和将编码数据转换为更有用的东西的开源解析器。我没有尝试过,但这可能会让你继续前进。
推荐阅读
- python - 如何使我的 Tkinter EXE 文本编辑器应用程序成为某些扩展的默认应用程序
- node.js - 在 Node.js 应用程序中保持开放连接
- javascript - 我如何使用 $.post() 发送表单数据?
- php - 更改图像或使用 php 表单保留旧图像
- ios - 不使用 UITableVIewDiffableDataSource 加载单元格
- c++ - 在 N*N 棋盘中,M 个象不能走多少个方格?
- javascript - 这个闭包中的外部函数变量和外部函数是什么?
- java - 从下面程序中的不同列表中删除公共元素的算法
- wordpress - 可能的 woocommce 错误在元框“自定义字段”添加/编辑产品页面中一直显示“total_sales”?
- visual-studio - 调试 UWP .NET 应用程序:MyApp.exe 中 0x79A1CFAC (SharedLibrary.dll) 处未处理的异常:0x00001007