Как создать CKReference с помощью веб-сервисов CloudKit?

Я очень успешно использую веб-службы CK, но не могу понять, как создать CKReference.

Я просмотрел документы здесь в отношении справочных словарей, но не могу заставить такой словарь работать.

Мой php генерирует следующий словарь операций:

{"operations":[
{"operationType": "create",
"record": { "recordType": "Works",
     "fields": {
          "type":{"value":"Painting"},
          "title": {"value":"test"},
          "date": {"value":"10/29/1965"},
          "height": {"value":"21"},
          "length": {"value":"21"},
          "width": {"value":"21"},
          "runningTime": {"value":""},
          "materials": {"value":"test"},
          "description":{"value":"test"},
          "saleStatus": {"value":"yes"},
          "tos":{"value":"yes"},
          "artist": {"value":"Peter Wiley"},
          "artistRecordName":{"value":"286CB3BF-69CC-4DD3-9233-CC80E5FA95D4"},
          "artistRecordRef": {
               "recordName": {"value":"286CB3BF-69CC-4DD3-9233-CC80E5FA95D4"},         
               "zoneID":{"zoneName": {"value":"_defaultZone"}},
               "action": {"value":"NONE"}
          },
          "subject":{"value":""},
          "metaType":{"value":"Fine Art"},
          "userRecordName":{"value":"30C54AD8-3701-428C-99B7-0393DD2DAB45"},
          "userRole":{"value":"Artist"},
          "status":{"value":"P"}
     }
} }
]}

Этот запрос возвращает ошибку:

BAD_REQUEST" [1]=> string(62) "BadRequestException: Неожиданный ввод в [строка: 26, столбец: 3]

Если я удалю «artistRecordRef», запрос будет работать как надо.

Я уверен, что ответ очевиден для более опытного глаза. Может кто-нибудь увидеть, что не так?


person Peter Wiley    schedule 21.07.2017    source источник


Ответы (1)


Хорошо, я нашел ответ здесь, но разместил для других, у кого может быть вопрос, потому что ответ было нелегко найти.

Вот что работает:

"artistRecordRef": {"value": {
                "recordName": "'.$artistRecordName.'",
                "action": "NONE"
            }
        },

Справочный словарь должен передаваться как значение. Я этого не понял, и это не очень хорошо задокументировано примерами в документации Apple (по крайней мере, в тех, которые мне удалось найти).

См.: Как можно Я использую веб-службы CloudKit для запросов на основе поля ссылки?

person Peter Wiley    schedule 21.07.2017
comment
Это было очень полезно, спасибо! Насколько я могу судить, CKReference нигде не упоминается в документах CloudKit Web Services. - person Clifton Labrum; 25.08.2020