2015-09-24 3 views
5

Ho due oggetti dati CloudKit che sembrano un po 'come questo:Come posso utilizzare i servizi Web CloudKit per eseguire query in base a un campo di riferimento?

Parent Oggetto:

{ 
    "records": [ 
     { 
      "recordName": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57", 
      "recordType": "ParentObject", 
      "fields": { 
       "fsYear": { 
        "value": "2015", 
        "type": "STRING" 
       }, 
       "displayOrder": { 
        "value": 2015221153856287200, 
        "type": "INT64" 
       }, 
       "fjpFSGuidForReference": { 
        "value": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57", 
        "type": "STRING" 
       }, 
       "fsDateSearch": { 
        "value": "2015221153856287158", 
        "type": "STRING" 
       }, 
      }, 
      "recordChangeTag": "id4w7ivn", 
      "created": { 
       "timestamp": 1439149087571, 
       "userRecordName": "_0d26968032e31bbc72c213037b6cb35d", 
       "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B" 
      }, 
      "modified": { 
       "timestamp": 1439149087571, 
       "userRecordName": "_0d26968032e31bbc72c213037b6cb35d", 
       "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B" 
      } 
     } 
    ], 
    "total": 
} 

oggetto figlio:

{ 
    "records": [ 
     { 
      "recordName": "2015221153856287168", 
      "recordType": "ChildObject", 
      "fields": { 
       "District": { 
        "value": "002", 
        "type": "STRING" 
       }, 
       "ZipCode": { 
        "value": "12345", 
        "type": "STRING" 
       }, 
       "InspecReference": { 
        "value": { 
         "recordName": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57", 
         "action": "NONE", 
         "zoneID": { 
          "zoneName": "_defaultZone" 
         } 
        }, 
        "type": "REFERENCE" 
       }, 
      }, 
      "recordChangeTag": "id4w7lew", 
      "created": { 
       "timestamp": 1439149090856, 
       "userRecordName": "_0d26968032e31bbc72c213037b6cb35d", 
       "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B" 
      }, 
      "modified": { 
       "timestamp": 1439149090856, 
       "userRecordName": "_0d26968032e31bbc72c213037b6cb35d", 
       "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B" 
      } 
     } 
    ], 
    "total": 1 
} 

Sto cercando di scrivere una query per diretta accedere al servizio Web CloudKit e restituire l'oggetto figlio in base al riferimento dell'oggetto padre.

La mia prova JSON simile a questa:

{"query":{"recordType":"ChildObject","filterBy":{"fieldName":"InspecReference","fieldValue":{ "value" : "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57", "type" : "string" },"comparator":"EQUALS"}},"zoneID":{"zoneName":"_defaultZone"}} 

Tuttavia, sto ottenendo il seguente errore da CloudKit:

{ "uuid": "33db91f3-b768-4a68-9056 -216ecc033e9e", "serverErrorCode": "BAD_REQUEST", "ragione": "BadRequestException: ingresso imprevisto"}

sto indovinando ho il record campo Dictionar y nella query sbagliata. Tuttavia, la documentazione non è chiara su come dovrebbe apparire su un oggetto di riferimento.

risposta

1

È necessario ricreare l'oggetto reale del riferimento. In questo caso particolare, il JSON è simile al seguente:

{ 
    "query": { 
     "recordType": "ChildObject", 
     "filterBy": { 
      "fieldName": "InspecReference", 
      "fieldValue": { 
       "value": { 
        "recordName": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57", 
        "action": "NONE" 
       }, 
       "type": "REFERENCE" 
      }, 
      "comparator": "EQUALS" 
     } 
    }, 
    "zoneID": { 
     "zoneName": "_defaultZone" 
    } 
} 
+0

questo è stato molto utile per me, perché non riuscivo a trovare della documentazione re come creare un CKReference con CKWS, in primo luogo. Grazie! –