Skip to content

CloudKit macOS xcode15.1 b3

Alex Soto edited this page Jan 3, 2024 · 2 revisions

#CloudKit.framework https://github.com/xamarin/xamarin-macios/pull/19717

diff -ruN /Applications/Xcode_15.1.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h /Applications/Xcode_15.1.0-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h
--- /Applications/Xcode_15.1.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h	2023-09-20 22:19:19
+++ /Applications/Xcode_15.1.0-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h	2023-11-07 16:28:53
@@ -14,22 +14,26 @@
 /*! @enum CKRecordSavePolicy
  *
  *  @constant CKRecordSaveIfServerRecordUnchanged
- *  @discussion Locally-edited keys are sent to the server.
- *  If the record on the server has been modified, fail the write and return an error. A CKShare's participants array is always treated as @c CKRecordSaveIfServerRecordUnchanged, regardless of the @c savePolicy of the operation that modifies the share.
+ *  @discussion Locally edited keys are sent to the server, updating the record if the server record has not been modified. This is the default and recommended save policy for regular use.
+ *  This policy compares the record change tag with the server record, and may return @c CKErrorServerRecordChanged if the server record has been modified, for example by another device.
+ *  Note: A @c CKShare record is always treated as @c CKRecordSaveIfServerRecordUnchanged, regardless of the @c savePolicy of the operation that modifies the share.
  *
  *  @constant CKRecordSaveChangedKeys
- *  @discussion Locally-edited keys are written to the server.
- *  Any previously committed change to the server, for example by other devices, will be overwritten by the locally changed value.
- *  This policy does not compare the record change tag and therefore will never return @c CKErrorServerRecordChanged
+ *  @discussion Locally edited keys are written to the server, updating the record even if the server record has been modified.
+ *  Note: This policy should be used with care, as it can overwrite changes made by other devices.
+ *  Any previously committed change to the server, for example by other devices, will always be overwritten by the locally changed value.
+ *  Note: A @c CKShare record is always treated as @c CKRecordSaveIfServerRecordUnchanged, regardless of the @c savePolicy of the operation that modifies the share.
+ *  For non-CKShare records, this policy does not compare the record change tag and therefore will not return @c CKErrorServerRecordChanged
  *
  *  @constant CKRecordSaveAllKeys
- *  @discussion All local keys are written to the server.
- *  Any previously committed change to the server, for example by other devices, will be overwritten by the local value.
+ *  @discussion All local keys are written to the server, updating the record even if the server record has been modified.
+ *  Note: This policy should be used with care. Any previously committed change to the server, for example by other devices, will be overwritten by the local value.
  *  Keys present only on the server remain unchanged.
  *  There are two common ways in which a server record will contain keys not present locally:
- *  1 - Since you've fetched this record, another client has added a new key to the record.
- *  2 - The presence of @c desiredKeys on the fetch / query that returned this record meant that only a portion of the record's keys were downloaded.
- *  This policy does not compare the record change tag and therefore will never return @c CKErrorServerRecordChanged.
+ *  1 - Another client may have added a new key to the record since it was fetched.
+ *  2 - If @c desiredKeys was used with the fetch / query that returned this record, only a portion of the record's keys may have been downloaded.
+ *  Note: A @c CKShare record is always treated as @c CKRecordSaveIfServerRecordUnchanged, regardless of the @c savePolicy of the operation that modifies the share.
+ *  For non-CKShare records, this policy does not compare the record change tag and therefore will not return @c CKErrorServerRecordChanged
  */
 
 typedef NS_ENUM(NSInteger, CKRecordSavePolicy) {
@@ -47,7 +51,11 @@
 @property (nullable, copy, nonatomic) NSArray<CKRecord *> *recordsToSave;
 @property (nullable, copy, nonatomic) NSArray<CKRecordID *> *recordIDsToDelete;
 
-/*! The default value is @c CKRecordSaveIfServerRecordUnchanged. */
+/*! @abstract  Determines what data is sent to the server and whether the save should succeed even if the record on the server has changed.
+ *
+ *  @discussion:  The default value is @c CKRecordSaveIfServerRecordUnchanged, which is the recommended value for regular use.
+ *  A @c CKShare record is always treated as @c CKRecordSaveIfServerRecordUnchanged, regardless of the @c savePolicy specified.
+ */
 @property (assign, nonatomic) CKRecordSavePolicy savePolicy;
 
 /*! @discussion This property is kept by the server to identify the last known request from this client.
Clone this wiki locally