2015-02-23 5 views
5

Es könnte eine reibungslosere Benutzererfahrung bieten, wenn recordName auf dem Client generiert wird.Irgendwelche Nachteile, wenn CKRecordID.recordName auf dem Client generiert wird?

var uuid = NSUUID().UUIDString 

Haben Sie Nachteil wissen, es zu tun?

+0

Gute Idee! Funktioniert es? Dies könnte in der Tat einige Situationen beschleunigen. –

+1

es funktioniert, manchmal kann es Dinge etwas beschleunigen, dh wenn ich Inhalt zeigen will, nur wenn alle Felder auf dem Client ausgefüllt wurde, muss auch das entsprechende Feld für 'recordName' dann nicht auf den Formularserver warten –

+0

Wie haben Sie mach das? Ich habe versucht, den Datensatz.RecordID zu setzen, aber dieser ist readonly. Wenn ich versuche, record.setValue (recordId.recordName, forKey: "RecordID") zu setzen, bekomme ich den Fehler, dass RecordID ein reserviertes Schlüsselwort ist –

Antwort

4

recordName wird immer auf dem Client generiert.

Wenn von Ihrer Anwendung kein recordName bereitgestellt wird, generiert das CloudKit-Framework eine UUID auf der Clientseite, bevor sie an den Server gesendet wird.

Es gibt keine Beschleunigung beim Generieren einer UUID in Ihrem eigenen Code, statt das CloudKit-Framework eine für Sie generieren zu lassen.

Vom Client erstellte recordName s sind vorhanden, damit Ihre Anwendung CloudKit-Datensätze in Ihrem eigenen lokalen Datenspeicher ablegen kann. Wenn Sie das nicht tun müssen, können Sie es CloudKit überlassen.

+1

Da eine Sicherungsaktion eine asynchrone Operation ist, können Sie die ID kennen, bevor der Callback zurückkehrt. So können Sie speichern und vergessen und immer noch die ID verwenden. Sie können auch mehrere Objekte mit einer Beziehung zueinander vordefinieren, ohne sie zuvor zu speichern. –

+2

Danke- Sie haben Recht. Ich habe mich auf die Leistung im Netzwerk konzentriert. Wenn Sie Ihren eigenen recordName definieren, erfahren Sie, welche ID vor dem Speichern gespeichert wurde. – farktronix

+0

Die Ausnahme, wenn Sie es so nennen könnten, ist, wenn Sie den Datensatz nicht besitzen - nämlich, ich denke an 'CKUserIdentity.userRecordID', die einen iCloud-Kontoinhaber darstellt und nicht von Ihnen generiert wird. Wenn dein Schema um UUIDs herum aufgebaut ist (die im 8-4-4-12-Format vorliegen müssen, wenn du aus einem 'uuidString' konstruierst), kann dich das auf eine Schleife werfen [ich spreche von harten Erfahrungen.] – AmitaiB

1

Das sollte genau der entworfene Zweck der gegebenen CKRecordID Konstruktoren sein.

Solange Sie nicht versuchen, dieselbe generierte ID in mehrere Datensätze einzufügen (was dazu führen könnte, dass Sie etwas mehr Fehlerbehandlung hinzufügen), kann ich hier keine Nachteile sehen.

Verwandte Themen