CloudKit JS deserialize [Double] Преобразуемые данные типа
Я следил за тем, как сохранить массив в CoreData?создать поле Transformable в моей модели данных и сохранить записи этого типа в 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, но там тоже нет ответа.
1 ответ
Трансформируемые объекты кодируются в двоичные списки свойств с использованием . Для 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
закодированные данные во что-то более полезное. Я ничего не пробовал, но это может вас заинтересовать.