CloudKit JS反序列化[Double]可转换类型数据

CloudKit JS deserialize [Double] Transformable type data

我按照 在我的数据模型中创建了一个可转换字段,并将该类型的记录保存到 CloudKit。我现在想从网络应用程序访问这些数据。我怎样才能反序列化它?

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几乎有同样的问题,但也没有答案。

可变形对象使用 NSKeyedArchiver 编码为二进制 属性 列表。对于 CloudKit 它们然后进行 base64 编码。要对此进行解码,您需要

  1. Base64解码,得到二进制plist。
  2. 将二进制 plist 解码为可识别的内容。

为了让您了解那里有什么,您可以将该字符串保存到 Mac 上的文件中并查看。如果将其保存到名为 array.txt 的文件中,则可以使用

对其进行解码
base64 -d < array.txt > array.plist

光看array.plist是看不懂的,因为它使用了二进制编码。但是您可以将其转换为 XML 以查看

的内容
plutil -convert xml1 array.plist

可在此处找到结果:https://gist.github.com/atomicbird/d5ca330c02cff95bbee7ee5d594f47f4

环顾四周,有一些用于二进制 plist 和将 NSKeyedArchiver 编码数据转换为更有用的东西的开源解析器。我还没有尝试过,但这可能会让你继续。