Skip to content

CloudKit iOS xcode9 beta1

Manuel de la Pena edited this page Jul 20, 2017 · 2 revisions

#CloudKit.framework

mandel

diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAcceptSharesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAcceptSharesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAcceptSharesOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAcceptSharesOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -11,7 +11,7 @@
 @class CKShare, CKShareMetadata;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKAcceptSharesOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAsset.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAsset.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAsset.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAsset.h	2017-05-24 23:55:29.000000000 -0400
@@ -8,7 +8,7 @@
 #import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKAsset : NSObject
 
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h	2016-10-28 14:24:39.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h	2017-05-25 06:01:48.000000000 -0400
@@ -14,11 +14,17 @@
 @class CKDatabase, CKOperation, CKRecordID, CKUserIdentity, CKShareParticipant, CKDiscoveredUserInfo, CKShare, CKShareMetadata;
 
 // This constant represents the current user's ID for zone ID
-CK_EXTERN NSString * const CKCurrentUserDefaultName NS_AVAILABLE(10_12, 10_0);
+CK_EXTERN NSString * const CKCurrentUserDefaultName API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
-CK_EXTERN NSString * const CKOwnerDefaultName NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKCurrentUserDefaultName instead");
+CK_EXTERN NSString * const CKOwnerDefaultName API_DEPRECATED_WITH_REPLACEMENT("CKCurrentUserDefaultName", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+/* A CKContainer, and its CKDatabases, are the main entry points into the CloudKit framework.
+
+ Several methods in CloudKit accept completion handlers to indicate when they're completed.
+ All CKOperation subclasses include progress and completion blocks to report significant events in their lifecycles.
+ Each of these handlers and blocks is invoked on a non-main serial queue.  The receiver is responsible for handling the message on a different queue or thread if it is required. */
+
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKContainer : NSObject
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -59,10 +65,10 @@
  */
 @property (nonatomic, readonly) CKDatabase *privateCloudDatabase;
 @property (nonatomic, readonly) CKDatabase *publicCloudDatabase;
-@property (nonatomic, readonly) CKDatabase *sharedCloudDatabase NS_AVAILABLE(10_12, 10_0);
+@property (nonatomic, readonly) CKDatabase *sharedCloudDatabase API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 /* Convenience method, will return a database that's pointer-equal to one of the above properties */
-- (CKDatabase *)databaseWithDatabaseScope:(CKDatabaseScope)databaseScope NS_AVAILABLE(10_12, 10_0);
+- (CKDatabase *)databaseWithDatabaseScope:(CKDatabaseScope)databaseScope API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 @end
 
@@ -75,13 +81,13 @@
     CKAccountStatusRestricted                          = 2,
     /* No iCloud account is logged in on this device */
     CKAccountStatusNoAccount                           = 3,
-} NS_ENUM_AVAILABLE(10_10, 8_0);
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 /* This local notification is posted when there has been any change to the logged in 
    iCloud account. On receipt, an updated account status should be obtained by calling
    accountStatusWithCompletionHandler:
  */
-CK_EXTERN NSString * const CKAccountChangedNotification NS_AVAILABLE(10_11, 9_0);
+CK_EXTERN NSString * const CKAccountChangedNotification API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0));
 
 @interface CKContainer (AccountStatus)
 
@@ -92,7 +98,7 @@
 typedef NS_OPTIONS(NSUInteger, CKApplicationPermissions) {
     /* Allows the user's record in CloudKit to be discoverable via the user's email address */
     CKApplicationPermissionUserDiscoverability         = 1 << 0,
-} NS_AVAILABLE(10_10, 8_0);
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 typedef NS_ENUM(NSInteger, CKApplicationPermissionStatus) {
     /* The user has not made a decision for this application permission. */
@@ -103,7 +109,7 @@
     CKApplicationPermissionStatusDenied                = 2,
     /* The user has granted this application permission */
     CKApplicationPermissionStatusGranted               = 3,
-} NS_ENUM_AVAILABLE(10_10, 8_0);
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 typedef void(^CKApplicationPermissionBlock)(CKApplicationPermissionStatus applicationPermissionStatus, NSError * _Nullable error);
 
@@ -124,14 +130,14 @@
 /* This fetches all user records that match an entry in the user's address book.
  CKDiscoverAllContactsOperation and CKDiscoverUserIdentityOperation are the more configurable,
  CKOperation-based alternatives to these methods */
-- (void)discoverAllIdentitiesWithCompletionHandler:(void (^)(NSArray<CKUserIdentity *> * _Nullable userIdentities, NSError * _Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0) __TVOS_UNAVAILABLE;
-- (void)discoverUserIdentityWithEmailAddress:(NSString *)email completionHandler:(void (^)(CKUserIdentity * _Nullable userInfo, NSError * _Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0);
-- (void)discoverUserIdentityWithPhoneNumber:(NSString *)phoneNumber completionHandler:(void (^)(CKUserIdentity * _Nullable userInfo, NSError * _Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0);
-- (void)discoverUserIdentityWithUserRecordID:(CKRecordID *)userRecordID completionHandler:(void (^)(CKUserIdentity * _Nullable userInfo, NSError * _Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0);
-
-- (void)discoverAllContactUserInfosWithCompletionHandler:(void (^)(NSArray<CKDiscoveredUserInfo *> * _Nullable userInfos, NSError * _Nullable error))completionHandler __TVOS_UNAVAILABLE NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use -[CKContainer discoverAllIdentitiesWithCompletionHandler:] instead");
-- (void)discoverUserInfoWithEmailAddress:(NSString *)email completionHandler:(void (^)(CKDiscoveredUserInfo * _Nullable userInfo, NSError * _Nullable error))completionHandler NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use -[CKContainer discoverUserIdentityWithEmailAddress:completionHandler:] instead");
-- (void)discoverUserInfoWithUserRecordID:(CKRecordID *)userRecordID completionHandler:(void (^)(CKDiscoveredUserInfo * _Nullable userInfo, NSError * _Nullable error))completionHandler NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use -[CKContainer discoverUserIdentityWithUserRecordID:completionHandler:] instead");
+- (void)discoverAllIdentitiesWithCompletionHandler:(void (^)(NSArray<CKUserIdentity *> * _Nullable userIdentities, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0)) API_UNAVAILABLE(tvos);
+- (void)discoverUserIdentityWithEmailAddress:(NSString *)email completionHandler:(void (^)(CKUserIdentity * _Nullable userInfo, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+- (void)discoverUserIdentityWithPhoneNumber:(NSString *)phoneNumber completionHandler:(void (^)(CKUserIdentity * _Nullable userInfo, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+- (void)discoverUserIdentityWithUserRecordID:(CKRecordID *)userRecordID completionHandler:(void (^)(CKUserIdentity * _Nullable userInfo, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+
+- (void)discoverAllContactUserInfosWithCompletionHandler:(void (^)(NSArray<CKDiscoveredUserInfo *> * _Nullable userInfos, NSError * _Nullable error))completionHandler API_DEPRECATED("Use -[CKContainer discoverAllIdentitiesWithCompletionHandler:]", macos(10.10, 10.12), ios(8.0, 10.0), watchos(3.0, 3.0));
+- (void)discoverUserInfoWithEmailAddress:(NSString *)email completionHandler:(void (^)(CKDiscoveredUserInfo * _Nullable userInfo, NSError * _Nullable error))completionHandler API_DEPRECATED("Use -[CKContainer discoverUserIdentityWithEmailAddress:completionHandler:]", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
+- (void)discoverUserInfoWithUserRecordID:(CKRecordID *)userRecordID completionHandler:(void (^)(CKDiscoveredUserInfo * _Nullable userInfo, NSError * _Nullable error))completionHandler API_DEPRECATED("Use -[CKContainer discoverUserIdentityWithUserRecordID:completionHandler:]", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
 
 @end
 
@@ -139,12 +145,12 @@
 
 /* Fetches share participants matching the provided info .
  CKFetchShareParticipantsOperation is the more configurable, CKOperation-based alternative to these methods. */
-- (void)fetchShareParticipantWithEmailAddress:(NSString *)emailAddress completionHandler:(void (^)(CKShareParticipant * _Nullable shareParticipant, NSError * _Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0);
-- (void)fetchShareParticipantWithPhoneNumber:(NSString *)phoneNumber completionHandler:(void (^)(CKShareParticipant * _Nullable shareParticipant, NSError *_Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0);
-- (void)fetchShareParticipantWithUserRecordID:(CKRecordID *)userRecordID completionHandler:(void (^)(CKShareParticipant *_Nullable shareParticipant, NSError *_Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0);
+- (void)fetchShareParticipantWithEmailAddress:(NSString *)emailAddress completionHandler:(void (^)(CKShareParticipant * _Nullable shareParticipant, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+- (void)fetchShareParticipantWithPhoneNumber:(NSString *)phoneNumber completionHandler:(void (^)(CKShareParticipant * _Nullable shareParticipant, NSError *_Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+- (void)fetchShareParticipantWithUserRecordID:(CKRecordID *)userRecordID completionHandler:(void (^)(CKShareParticipant *_Nullable shareParticipant, NSError *_Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
-- (void)fetchShareMetadataWithURL:(NSURL *)url completionHandler:(void (^)(CKShareMetadata *_Nullable metadata, NSError * _Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0);
-- (void)acceptShareMetadata:(CKShareMetadata *)metadata completionHandler:(void (^)(CKShare *_Nullable acceptedShare, NSError *_Nullable error))completionHandler NS_AVAILABLE(10_12, 10_0);
+- (void)fetchShareMetadataWithURL:(NSURL *)url completionHandler:(void (^)(CKShareMetadata *_Nullable metadata, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+- (void)acceptShareMetadata:(CKShareMetadata *)metadata completionHandler:(void (^)(CKShare *_Nullable acceptedShare, NSError *_Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 @end
 
@@ -156,7 +162,7 @@
   its callbacks from the start of the operation, but the request will not be re-sent to the server.
  If a long lived operation is cancelled or finishes completely it is no longer returned by these calls.
  */
-- (void)fetchAllLongLivedOperationIDsWithCompletionHandler:(void (^)(NSArray<NSString *> * _Nullable outstandingOperationIDs, NSError * _Nullable error))completionHandler NS_AVAILABLE(10_12, 9_3);
-- (void)fetchLongLivedOperationWithID:(NSString *)operationID completionHandler:(void (^)(CKOperation * _Nullable outstandingOperation, NSError * _Nullable error))completionHandler NS_AVAILABLE(10_12, 9_3);
+- (void)fetchAllLongLivedOperationIDsWithCompletionHandler:(void (^)(NSArray<NSString *> * _Nullable outstandingOperationIDs, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(9.3), tvos(9.2), watchos(3.0));
+- (void)fetchLongLivedOperationWithID:(NSString *)operationID completionHandler:(void (^)(CKOperation * _Nullable outstandingOperation, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(9.3), tvos(9.2), watchos(3.0));
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h	2017-05-20 02:32:00.000000000 -0400
@@ -15,13 +15,13 @@
     CKDatabaseScopePublic = 1,
     CKDatabaseScopePrivate,
     CKDatabaseScopeShared,
-} NS_ENUM_AVAILABLE(10_12, 10_0);
+} API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKDatabase : NSObject
 - (instancetype)init NS_UNAVAILABLE;
 - (void)addOperation:(CKDatabaseOperation *)operation;
-@property (nonatomic, readonly, assign) CKDatabaseScope databaseScope NS_AVAILABLE(10_12, 10_0);
+@property (nonatomic, readonly, assign) CKDatabaseScope databaseScope API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 @end
 
 @interface CKDatabase (ConvenienceMethods)
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabaseOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabaseOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabaseOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabaseOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,10 +10,11 @@
 @class CKDatabase;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKDatabaseOperation : CKOperation
 
-/* If no database is set, [self.container privateCloudDatabase] is used. */
+/* If no database is set, [self.container privateCloudDatabase] is used.
+   This will also set the container property of the operation's configuration to match the container of the passed in database. */
 @property (nonatomic, strong, nullable) CKDatabase *database;
 
 @end
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h	2017-05-24 23:55:29.000000000 -0400
@@ -17,11 +17,10 @@
 #define CK_HIDDEN   __attribute__((visibility("hidden")))
 #endif
 
-
-#if DEBUG
-    #define CK_UNIT_TESTS_AVAILABLE NS_CLASS_AVAILABLE(10_10, 8_0)
-    #define CK_UNIT_TESTS_EXTERN CK_EXTERN
+#ifndef CK_EXTERN_HIDDEN
+#ifdef __cplusplus
+#define CK_EXTERN_HIDDEN   extern "C" __attribute__((visibility ("hidden")))
 #else
-    #define CK_UNIT_TESTS_AVAILABLE CK_HIDDEN
-    #define CK_UNIT_TESTS_EXTERN CK_HIDDEN
+#define CK_EXTERN_HIDDEN   extern __attribute__((visibility ("hidden")))
+#endif
 #endif
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllContactsOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllContactsOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllContactsOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllContactsOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -12,13 +12,18 @@
 
 /* Finds all discoverable users in the device's address book. No Address Book access dialog will be displayed */
 NS_ASSUME_NONNULL_BEGIN
-__TVOS_UNAVAILABLE
-NS_CLASS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKDiscoverAllUserIdentitiesOperation instead")
+API_DEPRECATED_WITH_REPLACEMENT("CKDiscoverAllUserIdentitiesOperation", macos(10.10, 10.12), ios(8.0, 10.0), watchos(3.0, 3.0))
+API_UNAVAILABLE(tvos)
 @interface CKDiscoverAllContactsOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
 
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+
 @property (nonatomic, copy, nullable) void (^discoverAllContactsCompletionBlock)(NSArray<CKDiscoveredUserInfo *> * _Nullable userInfos, NSError * _Nullable operationError);
 
+#pragma clang diagnostic pop
+
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllUserIdentitiesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllUserIdentitiesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllUserIdentitiesOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllUserIdentitiesOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,10 +10,11 @@
 
 @class CKUserIdentity;
 
-/* Finds all discoverable users in the device's address book. No Address Book access dialog will be displayed */
+/* Finds all discoverable users in the device's contacts database. No Contacts access dialog will be displayed.
+ This operation scales linearly with the number of email addresses and phone numbers in the device's address book.  It may take some time to complete. */
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_12, 10_0)
-__TVOS_UNAVAILABLE
+API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0))
+API_UNAVAILABLE(tvos)
 @interface CKDiscoverAllUserIdentitiesOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserIdentitiesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserIdentitiesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserIdentitiesOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserIdentitiesOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -12,7 +12,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKDiscoverUserIdentitiesOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserInfosOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserInfosOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserInfosOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserInfosOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -11,7 +11,7 @@
 @class CKRecordID, CKDiscoveredUserInfo;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKDiscoverUserIdentitiesOperation instead")
+API_DEPRECATED_WITH_REPLACEMENT("CKDiscoverUserIdentitiesOperation", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0))
 @interface CKDiscoverUserInfosOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
@@ -20,9 +20,14 @@
 @property (nonatomic, copy, nullable) NSArray<NSString *> *emailAddresses;
 @property (nonatomic, copy, nullable) NSArray<CKRecordID *> *userRecordIDs;
 
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+
 /*  This block is called when the operation completes.
     The [NSOperation completionBlock] will also be called if both are set. */
 @property (nonatomic, copy, nullable) void (^discoverUserInfosCompletionBlock)(NSDictionary<NSString *, CKDiscoveredUserInfo *> * _Nullable emailsToUserInfos, NSDictionary<CKRecordID *, CKDiscoveredUserInfo *> * _Nullable userRecordIDsToUserInfos, NSError * _Nullable operationError);
 
+#pragma clang diagnostic pop
+
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoveredUserInfo.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoveredUserInfo.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoveredUserInfo.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoveredUserInfo.h	2017-05-24 23:55:29.000000000 -0400
@@ -14,7 +14,7 @@
 @class CKRecordID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Replaced by CKUserIdentity")
+API_DEPRECATED_WITH_REPLACEMENT("CKUserIdentity", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0))
 @interface CKDiscoveredUserInfo : NSObject
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -23,12 +23,12 @@
 
 #if (TARGET_OS_MAC && !defined(__i386__) && !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && !TARGET_OS_EMBEDDED) || TARGET_OS_IOS
 
-@property (nonatomic, readonly, copy, nullable) NSString *firstName NS_DEPRECATED(10_10, 10_11, 8_0, 9_0, "Use -[[CKDiscoveredUserInfo displayContact] givenName]");
-@property (nonatomic, readonly, copy, nullable) NSString *lastName NS_DEPRECATED(10_10, 10_11, 8_0, 9_0, "Use -[[CKDiscoveredUserInfo displayContact] familyName]");
+@property (nonatomic, readonly, copy, nullable) NSString *firstName API_DEPRECATED("Use CKDiscoveredUserInfo.displayContact.givenName", macos(10.10, 10.11), ios(8.0, 9.0), tvos(9.0, 9.0));
+@property (nonatomic, readonly, copy, nullable) NSString *lastName API_DEPRECATED("Use CKDiscoveredUserInfo.displayContact.familyName", macos(10.10, 10.11), ios(8.0, 9.0), tvos(9.0, 9.0));
 
 /* displayContact is not associated with the local Address Book.  It is a wrapper around
  information known to the CloudKit server, including first and last names */
-@property (nonatomic, readonly, copy, nullable) CNContact *displayContact NS_AVAILABLE(10_11, 9_0);
+@property (nonatomic, readonly, copy, nullable) CNContact *displayContact API_AVAILABLE(macos(10.11), ios(9.0));
 
 #else // (TARGET_OS_MAC && !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && !TARGET_OS_EMBEDDED) || TARGET_OS_IOS
 
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKError.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKError.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKError.h	2016-10-28 20:37:58.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKError.h	2017-05-20 02:16:40.000000000 -0400
@@ -10,25 +10,25 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-CK_EXTERN NSString * const CKErrorDomain NS_AVAILABLE(10_10, 8_0);
+CK_EXTERN NSString * const CKErrorDomain API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 /* When a CKErrorPartialFailure happens this key will be set in the error's userInfo dictionary.
    The value of this key will be a dictionary, and the values will be errors for individual items with the keys being the item IDs that failed. */ 
-CK_EXTERN NSString * const CKPartialErrorsByItemIDKey NS_AVAILABLE(10_10, 8_0);
+CK_EXTERN NSString * const CKPartialErrorsByItemIDKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 /* If the server rejects a record save because it has been modified since the last time it was read, 
    a CKErrorServerRecordChanged error will be returned and it will contain versions of the record 
    in its userInfo dictionary. Apply your custom conflict resolution logic to the server record (CKServerRecordKey) 
    and attempt a save of that record. */
-CK_EXTERN NSString * const CKRecordChangedErrorAncestorRecordKey NS_AVAILABLE(10_10, 8_0);
-CK_EXTERN NSString * const CKRecordChangedErrorServerRecordKey NS_AVAILABLE(10_10, 8_0);
-CK_EXTERN NSString * const CKRecordChangedErrorClientRecordKey NS_AVAILABLE(10_10, 8_0);
+CK_EXTERN NSString * const CKRecordChangedErrorAncestorRecordKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
+CK_EXTERN NSString * const CKRecordChangedErrorServerRecordKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
+CK_EXTERN NSString * const CKRecordChangedErrorClientRecordKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 /* On CKErrorServiceUnavailable or CKErrorRequestRateLimited errors the userInfo dictionary 
    may contain a NSNumber instance that specifies the period of time in seconds after
    which the client may retry the request.
  */
-CK_EXTERN NSString * const CKErrorRetryAfterKey NS_AVAILABLE(10_10, 8_0);
+CK_EXTERN NSString * const CKErrorRetryAfterKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 typedef NS_ENUM(NSInteger, CKErrorCode) {
     CKErrorInternalError                  = 1,  /* CloudKit.framework encountered an error.  This is a non-recoverable error. */
@@ -43,7 +43,7 @@
     CKErrorPermissionFailure              = 10, /* Access failure (save, fetch, or shareAccept) */
     CKErrorUnknownItem                    = 11, /* Record does not exist */
     CKErrorInvalidArguments               = 12, /* Bad client request (bad record graph, malformed predicate) */
-    CKErrorResultsTruncated NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Will not be returned") = 13,
+    CKErrorResultsTruncated API_DEPRECATED("Will not be returned", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0)) = 13,
     CKErrorServerRecordChanged            = 14, /* The record was rejected because the version on the server was different */
     CKErrorServerRejectedRequest          = 15, /* The server rejected this request.  This is a non-recoverable error */
     CKErrorAssetFileNotFound              = 16, /* Asset file was not found */
@@ -59,11 +59,12 @@
     CKErrorZoneNotFound                   = 26, /* The specified zone does not exist on the server */
     CKErrorLimitExceeded                  = 27, /* The request to the server was too large. Retry this request as a smaller batch. */
     CKErrorUserDeletedZone                = 28, /* The user deleted this zone through the settings UI. Your client should either remove its local data or prompt the user before attempting to re-upload any data to this zone. */
-    CKErrorTooManyParticipants            NS_AVAILABLE(10_12, 10_0) = 29, /* A share cannot be saved because there are too many participants attached to the share */
-    CKErrorAlreadyShared                  NS_AVAILABLE(10_12, 10_0) = 30, /* A record/share cannot be saved, doing so would cause a hierarchy of records to exist in multiple shares */
-    CKErrorReferenceViolation             NS_AVAILABLE(10_12, 10_0) = 31, /* The target of a record's parent or share reference was not found */
-    CKErrorManagedAccountRestricted       NS_AVAILABLE(10_12, 10_0) = 32, /* Request was rejected due to a managed account restriction */
-    CKErrorParticipantMayNeedVerification NS_AVAILABLE(10_12, 10_0) = 33, /* Share Metadata cannot be determined, because the user is not a member of the share.  There are invited participants on the share with email addresses or phone numbers not associated with any iCloud account. The user may be able to join the share if they can associate one of those email addresses or phone numbers with their iCloud account via the system Share Accept UI. Call UIApplication's openURL on this share URL to have the user attempt to verify their information. */
-} NS_ENUM_AVAILABLE(10_10, 8_0);
+    CKErrorTooManyParticipants            API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) = 29, /* A share cannot be saved because there are too many participants attached to the share */
+    CKErrorAlreadyShared                  API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) = 30, /* A record/share cannot be saved, doing so would cause a hierarchy of records to exist in multiple shares */
+    CKErrorReferenceViolation             API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) = 31, /* The target of a record's parent or share reference was not found */
+    CKErrorManagedAccountRestricted       API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) = 32, /* Request was rejected due to a managed account restriction */
+    CKErrorParticipantMayNeedVerification API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) = 33, /* Share Metadata cannot be determined, because the user is not a member of the share.  There are invited participants on the share with email addresses or phone numbers not associated with any iCloud account. The user may be able to join the share if they can associate one of those email addresses or phone numbers with their iCloud account via the system Share Accept UI. Call UIApplication's openURL on this share URL to have the user attempt to verify their information. */
+    CKErrorServerResponseLost             API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0)) = 34, /* The server received and processed this request, but the response was lost due to a network failure.  There is no guarantee that this request succeeded.  Your client should re-issue the request (if it is idempotent), or fetch data from the server to determine if the request succeeded. */
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchDatabaseChangesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchDatabaseChangesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchDatabaseChangesOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchDatabaseChangesOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKRecordZoneID, CKServerChangeToken;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKFetchDatabaseChangesOperation : CKDatabaseOperation
 
 /* This operation will fetch changes to record zones within a database
@@ -37,6 +37,10 @@
 @property (nonatomic, copy, nullable) void (^recordZoneWithIDChangedBlock)(CKRecordZoneID *zoneID);
 @property (nonatomic, copy, nullable) void (^recordZoneWithIDWasDeletedBlock)(CKRecordZoneID *zoneID);
 
+/* If this block is set it will be called instead of recordZoneWithIDWasDeletedBlock if the user deleted this zone via the iCloud storage UI.
+   This is an indication that the user wanted all data deleted, so local cached data should be wiped and not re-uploaded to the server. */
+@property (nonatomic, copy, nullable) void (^recordZoneWithIDWasPurgedBlock)(CKRecordZoneID *zoneID) API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+
 @property (nonatomic, copy, nullable) void (^changeTokenUpdatedBlock)(CKServerChangeToken * serverChangeToken);
 
 /* Clients are responsible for saving the change token at the end of the operation and passing it in to the next call to CKFetchDatabaseChangesOperation.
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchNotificationChangesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchNotificationChangesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchNotificationChangesOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchNotificationChangesOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKNotification, CKServerChangeToken;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_DEPRECATED("Instead of iterating notifications to enumerate changed record zones, use CKDatabaseSubscription, CKFetchDatabaseChangesOperation, and CKFetchRecordZoneChangesOperation", macos(10.10, 10.13), ios(8.0, 11.0), tvos(9.0, 11.0), watchos(3.0, 4.0))
 @interface CKFetchNotificationChangesOperation : CKOperation
 
 /* This operation will fetch all notification changes.
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordChangesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordChangesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordChangesOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordChangesOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -14,7 +14,7 @@
  Any serverChangeTokens saved from a CKFetchRecordChangesOperation are usable as a serverRecordZoneChangeToken in CKFetchRecordZoneChangesOperation */
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKFetchRecordZoneChangesOperation instead")
+API_DEPRECATED_WITH_REPLACEMENT("CKFetchRecordZoneChangesOperation", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0))
 @interface CKFetchRecordChangesOperation : CKDatabaseOperation
 
 /* This operation will fetch records changes in the given record zone.
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZoneChangesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZoneChangesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZoneChangesOperation.h	2016-10-28 14:24:39.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZoneChangesOperation.h	2017-05-25 06:01:48.000000000 -0400
@@ -11,7 +11,7 @@
 @class CKRecord, CKRecordID, CKRecordZoneID, CKFetchRecordZoneChangesOptions;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKFetchRecordZoneChangesOperation : CKDatabaseOperation
 
 /* This operation will fetch records changes across the given record zones
@@ -52,15 +52,15 @@
 @property (nonatomic, copy, nullable) void (^recordZoneChangeTokensUpdatedBlock)(CKRecordZoneID *recordZoneID, CKServerChangeToken * _Nullable serverChangeToken, NSData * _Nullable clientChangeTokenData);
 @property (nonatomic, copy, nullable) void (^recordZoneFetchCompletionBlock)(CKRecordZoneID *recordZoneID, CKServerChangeToken * _Nullable serverChangeToken, NSData * _Nullable clientChangeTokenData, BOOL moreComing, NSError * _Nullable recordZoneError);
 
-/* serverChangeTokens previously returned via a recordZoneFetchCompletionBlock invocation,
+/* serverChangeTokens previously returned via a recordZoneChangeTokensUpdatedBlock or recordZoneFetchCompletionBlock invocation,
  along with the record changes that preceded it, are valid even if there is a subsequent operationError */
 @property (nonatomic, copy, nullable) void (^fetchRecordZoneChangesCompletionBlock)(NSError * _Nullable operationError);
 
 @end
 
 
-NS_CLASS_AVAILABLE(10_12, 10_0)
-@interface CKFetchRecordZoneChangesOptions : NSObject <NSSecureCoding>
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+@interface CKFetchRecordZoneChangesOptions : NSObject <NSSecureCoding, NSCopying>
 
 @property (nonatomic, copy, nullable) CKServerChangeToken *previousServerChangeToken;
 
@@ -68,6 +68,5 @@
 
 /* Declares which user-defined keys should be fetched and added to the resulting CKRecords.  If nil, declares the entire record should be downloaded. If set to an empty array, declares that no user fields should be downloaded.  Defaults to nil. */
 @property (nonatomic, copy, nullable) NSArray<NSString *> *desiredKeys;
-
 @end
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZonesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZonesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZonesOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZonesOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKRecordZone, CKRecordZoneID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKFetchRecordZonesOperation : CKDatabaseOperation
 
 + (instancetype)fetchAllRecordZonesOperation;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordsOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordsOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordsOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordsOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKRecord, CKRecordID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKFetchRecordsOperation : CKDatabaseOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareMetadataOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareMetadataOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareMetadataOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareMetadataOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -12,7 +12,7 @@
 @class CKShareMetadata, CKFetchShareMetadataOptions;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKFetchShareMetadataOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareParticipantsOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareParticipantsOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareParticipantsOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareParticipantsOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKUserIdentityLookupInfo, CKShareParticipant, CKRecordID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKFetchShareParticipantsOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchSubscriptionsOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchSubscriptionsOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchSubscriptionsOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchSubscriptionsOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -11,7 +11,7 @@
 @class CKSubscription;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0) __WATCHOS_PROHIBITED
+API_AVAILABLE(macos(10.10), ios(8.0)) __WATCHOS_PROHIBITED
 @interface CKFetchSubscriptionsOperation : CKDatabaseOperation
 
 + (instancetype)fetchAllSubscriptionsOperation;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchWebAuthTokenOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchWebAuthTokenOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchWebAuthTokenOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchWebAuthTokenOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -8,7 +8,7 @@
 #import <CloudKit/CKDatabaseOperation.h>
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_11, 9_2)
+API_AVAILABLE(macos(10.11), ios(9.2), tvos(9.1), watchos(3.0))
 @interface CKFetchWebAuthTokenOperation : CKDatabaseOperation
 
 /* This operation will fetch a web auth token given an API token obtained
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKLocationSortDescriptor.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKLocationSortDescriptor.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKLocationSortDescriptor.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKLocationSortDescriptor.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CLLocation;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKLocationSortDescriptor : NSSortDescriptor <NSSecureCoding>
 
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKMarkNotificationsReadOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKMarkNotificationsReadOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKMarkNotificationsReadOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKMarkNotificationsReadOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -11,7 +11,7 @@
 @class CKNotificationID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_DEPRECATED("Instead of iterating notifications, consider using CKDatabaseSubscription, CKFetchDatabaseChangesOperation, and CKFetchRecordZoneChangesOperation as appropriate", macos(10.10, 10.13), ios(8.0, 11.0), tvos(9.0, 11.0), watchos(3.0, 4.0))
 @interface CKMarkNotificationsReadOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyBadgeOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyBadgeOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyBadgeOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyBadgeOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -8,7 +8,7 @@
 #import <CloudKit/CKOperation.h>
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_DEPRECATED("No longer supported, will cease working at some point in the future", macos(10.10, 10.13), ios(8.0, 11.0), tvos(9.0, 11.0), watchos(3.0, 4.0))
 @interface CKModifyBadgeOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordZonesOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordZonesOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordZonesOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordZonesOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKRecordZone, CKRecordZoneID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKModifyRecordZonesOperation : CKDatabaseOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h	2017-05-20 02:32:00.000000000 -0400
@@ -22,10 +22,10 @@
                                                1 - Since you've fetched this record, another client has added a new key to the record.
                                                2 - The presence of desiredKeys on the fetch / query that returned this record meant
                                                that only a portion of the record's keys were downloaded. */
-} NS_ENUM_AVAILABLE(10_10, 8_0);
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKModifyRecordsOperation : CKDatabaseOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
@@ -42,7 +42,8 @@
 @property (nonatomic, copy, nullable) NSData *clientChangeTokenData;
 
 /* Determines whether the batch should fail atomically or not. YES by default.
-   This only applies to zones that support CKRecordZoneCapabilityAtomic. */
+   Server-side write atomicity is only enforced on zones that have CKRecordZoneCapabilityAtomic.
+   If isAtomic is YES, client-side optimizations are enforced regardless of the zone's capabilities.  (For example, if a record is malformed, and cannot be sent to the server, the client will forcibly fail all other records-to-be-modified in that zone)  */
 @property (nonatomic, assign) BOOL atomic NS_SWIFT_NAME(isAtomic);
 
 /* Called repeatedly during transfer.
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifySubscriptionsOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifySubscriptionsOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifySubscriptionsOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifySubscriptionsOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKSubscription;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0) __WATCHOS_PROHIBITED
+API_AVAILABLE(macos(10.10), ios(8.0)) __WATCHOS_PROHIBITED
 @interface CKModifySubscriptionsOperation : CKDatabaseOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h	2016-10-28 20:37:58.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h	2017-05-24 23:55:29.000000000 -0400
@@ -13,7 +13,7 @@
 @class CKRecordID, CKRecordZoneID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKNotificationID : NSObject <NSCopying, NSSecureCoding>
 @end
 
@@ -21,10 +21,10 @@
     CKNotificationTypeQuery            = 1, /* Generated by CKQuerySubscriptions */
     CKNotificationTypeRecordZone       = 2, /* Generated by CKRecordZoneSubscriptions */
     CKNotificationTypeReadNotification = 3, /* Indicates a notification that a client had previously marked as read. */
-    CKNotificationTypeDatabase         NS_AVAILABLE(10_12, 10_0) = 4, /* Generated by CKDatabaseSubscriptions */
-} NS_ENUM_AVAILABLE(10_10, 8_0);
+    CKNotificationTypeDatabase         API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) = 4, /* Generated by CKDatabaseSubscriptions */
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKNotification : NSObject
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -55,21 +55,37 @@
 @property (nonatomic, readonly, copy, nullable) NSString *alertLocalizationKey __TVOS_PROHIBITED;
 /* A list of field names to take from the matching record that is used as substitution variables in a formatted alert string. */
 @property (nonatomic, readonly, copy, nullable) NSArray<NSString *> *alertLocalizationArgs __TVOS_PROHIBITED;
+
+/* Optional title of the alert to display in a push notification. */
+@property (nonatomic, readonly, copy, nullable) NSString *title API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
+/* Instead of a raw title string, you may optionally specify a key for a localized string in your app's Localizable.strings file. */
+@property (nonatomic, readonly, copy, nullable) NSString *titleLocalizationKey API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
+/* A list of field names to take from the matching record that is used as substitution variables in a formatted title string. */
+@property (nonatomic, readonly, copy, nullable) NSArray<NSString *> *titleLocalizationArgs API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
+
+/* Optional subtitle of the alert to display in a push notification. */
+@property (nonatomic, readonly, copy, nullable) NSString *subtitle API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
+/* Instead of a raw subtitle string, you may optionally specify a key for a localized string in your app's Localizable.strings file. */
+@property (nonatomic, readonly, copy, nullable) NSString *subtitleLocalizationKey API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
+/* A list of field names to take from the matching record that is used as substitution variables in a formatted subtitle string. */
+@property (nonatomic, readonly, copy, nullable) NSArray<NSString *> *subtitleLocalizationArgs API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
+
+
 /* A key for a localized string to be used as the alert action in a modal style notification. */
 @property (nonatomic, readonly, copy, nullable) NSString *alertActionLocalizationKey __TVOS_PROHIBITED;
 /* The name of an image in your app bundle to be used as the launch image when launching in response to the notification. */
 @property (nonatomic, readonly, copy, nullable) NSString *alertLaunchImage __TVOS_PROHIBITED;
 
 /* The number to display as the badge of the application icon */
-@property (nonatomic, readonly, copy, nullable) NSNumber *badge __TVOS_AVAILABLE(10_0);
+@property (nonatomic, readonly, copy, nullable) NSNumber *badge API_AVAILABLE(tvos(10.0));
 /* The name of a sound file in your app bundle to play upon receiving the notification. */
 @property (nonatomic, readonly, copy, nullable) NSString *soundName __TVOS_PROHIBITED;
 
 /* The ID of the subscription that caused this notification to fire */
-@property (nonatomic, readonly, copy, nullable) NSString *subscriptionID NS_AVAILABLE(10_11, 9_0);
+@property (nonatomic, readonly, copy, nullable) NSString *subscriptionID API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0));
 
 /* The category for user-initiated actions in the notification */
-@property (nonatomic, readonly, copy, nullable) NSString *category NS_AVAILABLE(10_11, 9_0) __TVOS_PROHIBITED;
+@property (nonatomic, readonly, copy, nullable) NSString *category API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0)) __TVOS_PROHIBITED;
 
 @end
 
@@ -84,19 +100,26 @@
  - alertActionLocalizationKey
  - alertLaunchImage
  - soundName
+ - content-available
  - desiredKeys
  - queryNotificationReason
  - recordID
  - containerIdentifier
+ - titleLocalizationKey
+ - titleLocalizationArgs
+ - title
+ - subtitleLocalizationKey
+ - subtitleLocalizationArgs
+ - subtitle
  */
 
 typedef NS_ENUM(NSInteger, CKQueryNotificationReason) {
     CKQueryNotificationReasonRecordCreated = 1,
     CKQueryNotificationReasonRecordUpdated,
     CKQueryNotificationReasonRecordDeleted,
-} NS_ENUM_AVAILABLE(10_10, 8_0);
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKQueryNotification : CKNotification
 
 @property (nonatomic, readonly, assign) CKQueryNotificationReason queryNotificationReason;
@@ -108,9 +131,9 @@
 @property (nonatomic, readonly, copy, nullable) CKRecordID *recordID;
 
 /* If YES, this record is in the public database.  Else, it's in the private database */
-@property (nonatomic, readonly, assign) BOOL isPublicDatabase NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use databaseScope instead");
+@property (nonatomic, readonly, assign) BOOL isPublicDatabase API_DEPRECATED("Use databaseScope instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
 
-@property (nonatomic, readonly, assign) CKDatabaseScope databaseScope NS_AVAILABLE(10_12, 10_0);
+@property (nonatomic, readonly, assign) CKDatabaseScope databaseScope API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 @end
 
@@ -126,16 +149,23 @@
  - alertActionLocalizationKey
  - alertLaunchImage
  - soundName
+ - content-available
  - recordZoneID
  - containerIdentifier
+ - titleLocalizationKey
+ - titleLocalizationArgs
+ - title
+ - subtitleLocalizationKey
+ - subtitleLocalizationArgs
+ - subtitle
  */
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKRecordZoneNotification : CKNotification
 
 @property (nonatomic, readonly, copy, nullable) CKRecordZoneID *recordZoneID;
 
-@property (nonatomic, readonly, assign) CKDatabaseScope databaseScope NS_AVAILABLE(10_12, 10_0);
+@property (nonatomic, readonly, assign) CKDatabaseScope databaseScope API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 @end
 
@@ -151,10 +181,17 @@
  - alertActionLocalizationKey
  - alertLaunchImage
  - soundName
+ - content-available
  - containerIdentifier
+ - titleLocalizationKey
+ - titleLocalizationArgs
+ - title
+ - subtitleLocalizationKey
+ - subtitleLocalizationArgs
+ - subtitle
  */
 
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKDatabaseNotification : CKNotification
 
 @property (nonatomic, readonly, assign) CKDatabaseScope databaseScope;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperation.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperation.h	2017-05-19 21:19:37.000000000 -0400
@@ -6,15 +6,59 @@
 //
 
 #import <Foundation/Foundation.h>
+#import <CloudKit/CKDefines.h>
 
-@class CKContainer;
+@class CKContainer, CKOperationConfiguration, CKOperationGroup;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKOperation : NSOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
 
+/*! @abstract This defines per-operation configuration settings.
+ *
+ *  @discussion See the CKOperationConfiguration class description for info on how this configuration composes with CKOperationGroup.defaultConfiguration
+ */
+@property (nonatomic, copy, nullable) CKOperationConfiguration *configuration API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+
+/*! @abstract The group this operation is associated with
+ */
+@property (nonatomic, strong, nullable) CKOperationGroup *group API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+
+/*! @abstract This is an identifier unique to this CKOperation.
+ *
+ *  @discussion This value is chosen by the system, and will be unique to this instance of a CKOperation.  This identifier will be sent to Apple's servers, and can be used to identify any server-side logging associated with this operation.
+ */
+@property (nonatomic, readonly, copy) NSString *operationID API_AVAILABLE(macos(10.12), ios(9.3), tvos(9.2), watchos(3.0));
+
+/*
+ This callback is called after a long lived operation has begun running and is persisted. Once this callback is called the operation will continue running even if the current process exits.
+ */
+@property (nonatomic, strong, nullable) void (^longLivedOperationWasPersistedBlock)(void) API_AVAILABLE(macos(10.12), ios(9.3), tvos(9.2), watchos(3.0));
+
+@end
+
+/* An operation configuration is a set of properties that describes how your operation should behave.  All properties have a default value.  When determining what properties to apply to an operation, we consult the operation's configuration property, as well as the operation->group->defaultConfiguration property.  We combine them following these rules:
+   Group Default Configuration Value | Operation Configuration Value |        Value Applied To Operation
+  -----------------------------------+-------------------------------+-----------------------------------------
+             default value           |         default value         |                  default value
+             default value           |         explicit value        |       operation.configuration explicit value
+             explicit value          |         default value         | operation.group.defaultConfiguration explicit value
+             explicit value          |         explicit value        |       operation.configuration explicit value
+ 
+   For example:
+   CKOperationGroup -> defaultConfiguration -> allowsCellularAccess explicitly set to NO
+ + CKOperation -> configuration -> allowsCellularAccess has default value of YES
+ = disallow cellular access
+ 
+   CKOperationGroup -> defaultConfiguration -> allowsCellularAccess explicitly set to NO
+ + CKOperation -> configuration -> allowsCellularAccess explicitly set to YES
+ = allow cellular access
+ */
+API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
+@interface CKOperationConfiguration : NSObject
+
 /* If no container is set, [CKContainer defaultContainer] is used */
 @property (nonatomic, strong, nullable) CKContainer *container;
 
@@ -33,16 +77,12 @@
  CKOperations have a default qualityOfService of NSQualityOfServiceUtility.
 
  */
+@property (nonatomic, assign) NSQualityOfService qualityOfService;
 
-/* If set, network traffic will happen on a background NSURLSession.
- Defaults to (NSOperationQualityOfServiceBackground == self.qualityOfService) */
-@property (nonatomic, assign) BOOL usesBackgroundSession NS_DEPRECATED(10_10, 10_11, 8_0, 9_0, "Set qualityOfService to NSQualityOfServiceUtility or NSQualityOfServiceBackground");
 
 /* Defaults to YES */
 @property (nonatomic, assign) BOOL allowsCellularAccess;
 
-@property (nonatomic, readonly, copy) NSString *operationID NS_AVAILABLE(10_12, 9_3);
-
 /* 
    Long lived operations will continue running even if your process exits. If your process remains alive for the lifetime of the long lived operation its behavior is the same as a regular operation.
 
@@ -53,24 +93,34 @@
  
    The default value for longLived is NO. Changing the value of longLived on an already started operation or on an outstanding long lived operation fetched from CKContainer has no effect.
  */
-@property (nonatomic, assign, getter=isLongLived) BOOL longLived NS_AVAILABLE(10_12, 9_3);
+@property (nonatomic, assign, getter=isLongLived) BOOL longLived;
 
 /* 
    If non-zero, overrides the timeout interval for any network requests issued by this operation.
    See NSURLSessionConfiguration.timeoutIntervalForRequest 
+   The default value is 60.
 */
-@property (nonatomic, assign) NSTimeInterval timeoutIntervalForRequest NS_AVAILABLE(10_12, 10_0);
+@property (nonatomic, assign) NSTimeInterval timeoutIntervalForRequest;
 
 /*
- If non-zero, overrides the timeout interval for any network resources retrieved by this operation.
- See NSURLSessionConfiguration.timeoutIntervalForResource
+   If non-zero, overrides the timeout interval for any network resources retrieved by this operation.
+   See NSURLSessionConfiguration.timeoutIntervalForResource
+   The default value is -1.
  */
-@property (nonatomic, assign) NSTimeInterval timeoutIntervalForResource NS_AVAILABLE(10_12, 10_0);
+@property (nonatomic, assign) NSTimeInterval timeoutIntervalForResource;
 
-/*
-   This callback is called after a long lived operation has begun running and is persisted. Once this callback is called the operation will continue running even if the current process exits.
- */
-@property (nonatomic, strong, nullable) void (^longLivedOperationWasPersistedBlock)(void) NS_AVAILABLE(10_12, 9_3);
 
 @end
+
+#pragma mark - Deprecated CKOperation
+
+/* These deprecated properties now read and write from the CKOperation's configuration */
+@interface CKOperation (CKOperationDeprecated)
+@property (nonatomic, strong, nullable) CKContainer *container          API_DEPRECATED("Use CKOperationConfiguration", macos(10.10, 10.13), ios(8.0, 11.0), tvos(9.0, 11.0), watchos(3.0, 4.0));
+@property (nonatomic, assign) BOOL allowsCellularAccess                 API_DEPRECATED("Use CKOperationConfiguration", macos(10.10, 10.13), ios(8.0, 11.0), tvos(9.0, 11.0), watchos(3.0, 4.0));
+@property (nonatomic, assign, getter=isLongLived) BOOL longLived        API_DEPRECATED("Use CKOperationConfiguration", macos(10.12, 10.13), ios(9.3, 11.0), tvos(9.2, 11.0), watchos(3.0, 4.0));
+@property (nonatomic, assign) NSTimeInterval timeoutIntervalForRequest  API_DEPRECATED("Use CKOperationConfiguration", macos(10.12, 10.13), ios(10.0, 11.0), tvos(10.0, 11.0), watchos(3.0, 4.0));
+@property (nonatomic, assign) NSTimeInterval timeoutIntervalForResource API_DEPRECATED("Use CKOperationConfiguration", macos(10.12, 10.13), ios(10.0, 11.0), tvos(10.0, 11.0), watchos(3.0, 4.0));
+@end
 NS_ASSUME_NONNULL_END
+
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h	2017-05-25 05:39:10.000000000 -0400
@@ -0,0 +1,103 @@
+//
+//  CKOperationGroup.h
+//  CloudKit
+//
+//  Copyright (c) 2016 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CloudKit/CKDefines.h>
+
+@class CKOperationConfiguration;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*! @enum CKOperationGroupTransferSize
+ *  @abstract Valid values for expectedSendSize and expectedReceiveSize
+ *  @constant CKOperationGroupTransferSizeUnknown Default value when you're completely unsure of your working set size.
+ *  @constant CKOperationGroupTransferSizeKilobytes Less than 1MB
+ *  @constant CKOperationGroupTransferSizeMegabytes 1-10MB
+ *  @constant CKOperationGroupTransferSizeTensOfMegabytes 10-100MB
+ *  @constant CKOperationGroupTransferSizeHundredsOfMegabytes 100MB-1GB
+ *  @constant CKOperationGroupTransferSizeGigabytes 1-10GB
+ *  @constant CKOperationGroupTransferSizeTensOfGigabytes 10-100GB
+ *  @constant CKOperationGroupTransferSizeHundredsOfGigabytes More than 100GB
+ */
+typedef NS_ENUM(NSInteger, CKOperationGroupTransferSize) {
+    CKOperationGroupTransferSizeUnknown,
+    CKOperationGroupTransferSizeKilobytes,
+    CKOperationGroupTransferSizeMegabytes,
+    CKOperationGroupTransferSizeTensOfMegabytes,
+    CKOperationGroupTransferSizeHundredsOfMegabytes,
+    CKOperationGroupTransferSizeGigabytes,
+    CKOperationGroupTransferSizeTensOfGigabytes,
+    CKOperationGroupTransferSizeHundredsOfGigabytes,
+} API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+
+/*! @class CKOperationGroup
+ *
+ *  @abstract A mechanism for your app to group several operations at the granularity of a user action.
+ *
+ *  @discussion For example, when building a Calendar application, these things might warrant being their own operation groups:
+ *  - an initial fetch of data from the server, consisting of many queries, fetchChanges, and fetch operations
+ *  - doing an incremental fetch of data in response to a push notification
+ *  - saving several records due to a user saving a calendar event
+ *
+ *  You associate CKOperationGroups with CKOperations by setting the CKOperation.group property.  Create a new CKOperationGroup instance for each distinct user action.
+ */
+API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
+@interface CKOperationGroup : NSObject <NSSecureCoding>
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
+
+/*! @abstract This is an identifier unique to this CKOperationGroup
+ *
+ *  @discussion This value is chosen by the system, and will be unique to this instance of a CKOperationGroup.  This identifier will be sent to Apple's servers, and can be used to identify any server-side logging associated with this operation group.
+ */
+@property (nonatomic, readonly, copy) NSString *operationGroupID;
+ 
+/*! @abstract This is the default configuration applied to operations in this operation group.
+ *
+ *  @discussion If an operation associated with this operation group has its own configuration, then any explicitly-set properties in that operation's configuration will override these default configuration values.  See the example in CKOperation.h
+ */
+@property (atomic, copy, nullable) CKOperationConfiguration *defaultConfiguration;
+
+/*! @abstract Describes the user action attributed to the operation group.
+ *
+ *  @discussion `name` should describe the type of work being done.  Some examples:
+ *  "Initial Fetch"
+ *  "Incremental Fetch"
+ *  "Saving User-Entered Record"
+ *  This string will be sent to Apple servers to provide aggregate reporting for CKOperationGroups and therefore must not include personally identifying data.
+*/
+@property (atomic, copy, nullable) NSString *name;
+
+/*! @abstract Describes an application-specific "number of elements" associated with the operation group.
+ *
+ *  @discussion `quantity` is intended to show the app-specific count of items contained within the operation group.  It is your job to assign meaning to this value.  For example, if an app created an operation group to save 3 calendar events the user had created, the app might want to set this to "3".
+ */
+@property (atomic, assign) NSUInteger quantity;
+
+/* @abstract Estimated size of traffic being uploaded to the CloudKit Server
+ *
+ * @discussion Inform the system how much data you plan on transferring.  Obviously, these won't be exact.  Be as accurate as possible, but even an order-of-magnitude estimate is better than no value.  The system will consult these values when scheduling discretionary network requests (see the description of CKOperationConfiguration -> qualityOfService).
+ * Overestimating your workload means that an operation group issuing discretionary network requests may be delayed until network conditions are good.
+ * Underestimating your workload may cause the system to oversaturate a constrained connection, leading to network failures.
+ * You may update after the CKOperationGroup is created.  If it is increased, then subsequent CKOperations associated with this operation group may be delayed until network conditions are good.
+ * Defaults to CKOperationGroupTransferSizeUnknown
+ */
+@property (atomic, assign) CKOperationGroupTransferSize expectedSendSize;
+
+/* @abstract Estimated size of traffic being downloaded from the CloudKit Server
+ *
+ * @discussion Inform the system how much data you plan on transferring.  Obviously, these won't be exact.  Be as accurate as possible, but even an order-of-magnitude estimate is better than no value.  The system will consult these values when scheduling discretionary network requests (see the description of CKOperationConfiguration -> qualityOfService).
+ * Overestimating your workload means that an operation group issuing discretionary network requests may be delayed until network conditions are good.
+ * Underestimating your workload may cause the system to oversaturate a constrained connection, leading to network failures.
+ * You may update after the CKOperationGroup is created.  If it is increased, then subsequent CKOperations associated with this operation group may be delayed until network conditions are good.
+ * Defaults to CKOperationGroupTransferSizeUnknown
+ */
+@property (atomic, assign) CKOperationGroupTransferSize expectedReceiveSize;
+
+@end
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQuery.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQuery.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQuery.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQuery.h	2017-05-24 23:55:29.000000000 -0400
@@ -8,7 +8,7 @@
 #import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKQuery : NSObject <NSSecureCoding, NSCopying>
 
 /*
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQueryOperation.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQueryOperation.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQueryOperation.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQueryOperation.h	2017-05-24 23:55:29.000000000 -0400
@@ -9,7 +9,7 @@
 #import <CloudKit/CKDatabaseOperation.h>
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKQueryCursor : NSObject <NSCopying, NSSecureCoding>
 - (instancetype)init NS_UNAVAILABLE;
 @end
@@ -19,9 +19,9 @@
 /* Query operations have a dynamically defined maximum number of results.  If the results of a query
  trip this max, your completion block will invoked with a cursor.  Issue a new query with that cursor
  to fetch the next batch of results. */
-CK_EXTERN const NSUInteger CKQueryOperationMaximumResults NS_AVAILABLE(10_10, 8_0);
+CK_EXTERN const NSUInteger CKQueryOperationMaximumResults API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKQueryOperation : CKDatabaseOperation
 
 /* Queries invoked within a sharedCloudDatabase must specify a zoneID.  Cross-zone queries are not supported in a sharedCloudDatabase */
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h	2016-10-28 14:24:39.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h	2017-05-25 05:39:10.000000000 -0400
@@ -16,16 +16,16 @@
 NS_ASSUME_NONNULL_BEGIN
 
 /* Use this constant for the recordType parameter when fetching User Records. */
-CK_EXTERN NSString * const CKRecordTypeUserRecord NS_AVAILABLE(10_10, 8_0);
+CK_EXTERN NSString * const CKRecordTypeUserRecord API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 /* Use these keys in queries to match on the record's parent or share reference */
-CK_EXTERN NSString * const CKRecordParentKey NS_AVAILABLE(10_12, 10_0);
-CK_EXTERN NSString * const CKRecordShareKey NS_AVAILABLE(10_12, 10_0);
+CK_EXTERN NSString * const CKRecordParentKey API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+CK_EXTERN NSString * const CKRecordShareKey API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 @protocol CKRecordValue <NSObject>
 @end
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKRecord : NSObject <NSSecureCoding, NSCopying>
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -40,7 +40,7 @@
 @property (nonatomic, readonly, copy) CKRecordID *recordID;
 
 /* Change tags are updated by the server to a unique value every time a record is modified.
-   A different change tag necessarily means that the contents of the record are different. */
+ A different change tag necessarily means that the contents of the record are different. */
 @property (nonatomic, readonly, copy, nullable) NSString *recordChangeTag;
 
 /* This is a User Record recordID, identifying the user that created this record. */
@@ -51,32 +51,32 @@
 @property (nonatomic, readonly, copy, nullable) CKRecordID *lastModifiedUserRecordID;
 @property (nonatomic, readonly, copy, nullable) NSDate *modificationDate;
 
-/* 
-    In addition to objectForKey: and setObject:forKey:, dictionary-style subscripting (record[key] and record[key] = value) can be used to get and set values.
-    Acceptable value object classes are:
-        CKReference
-        CKAsset
-        CLLocation
-        NSData
-        NSDate
-        NSNumber
-        NSString
-        NSArray containing objects of any of the types above
- 
-    Any other classes will result in an exception with name NSInvalidArgumentException.
-
-    Derived field keys are prefixed with '_'. Attempting to set a key prefixed with a '_' will result in an error.
- 
-    Key names roughly match C variable name restrictions. They must begin with an ASCII letter and can contain ASCII
-     letters and numbers and the underscore character.
-    The maximum key length is 255 characters.
-*/
+/*
+ In addition to objectForKey: and setObject:forKey:, dictionary-style subscripting (record[key] and record[key] = value) can be used to get and set values.
+ Acceptable value object classes are:
+ CKReference
+ CKAsset
+ CLLocation
+ NSData
+ NSDate
+ NSNumber
+ NSString
+ NSArray containing objects of any of the types above
+
+ Any other classes will result in an exception with name NSInvalidArgumentException.
+
+ Derived field keys are prefixed with '_'. Attempting to set a key prefixed with a '_' will result in an error.
+
+ Key names roughly match C variable name restrictions. They must begin with an ASCII letter and can contain ASCII
+ letters and numbers and the underscore character.
+ The maximum key length is 255 characters.
+ */
 - (nullable __kindof id <CKRecordValue>)objectForKey:(NSString *)key;
 - (void)setObject:(nullable __kindof id <CKRecordValue>)object forKey:(NSString *)key;
 - (NSArray<NSString *> *)allKeys;
 
 /* A special property that returns an array of token generated from all the string field values in the record.
-   These tokens have been normalized for the current locale, so they are suitable for performing full-text searches. */
+ These tokens have been normalized for the current locale, so they are suitable for performing full-text searches. */
 - (NSArray<NSString *> *)allTokens;
 
 - (nullable __kindof id <CKRecordValue>)objectForKeyedSubscript:(NSString *)key;
@@ -98,33 +98,53 @@
 - (void)encodeSystemFieldsWithCoder:(NSCoder *)coder;
 
 /* The share property on a record can be set by creating a share using -[CKShare initWithRootRecord:].
- 
+
  The share property on a record will be removed when the corresponding CKShare is deleted from the server. Send this record in the same batch as the share delete and this record's share property will be updated.
- 
+
  Sharing is only supported in zones with the CKRecordZoneCapabilitySharing capability. The default zone does not support sharing.
- 
+
  If any records have a parent reference to this record, they are implicitly shared alongside this record.
+
+ Note that records in a parent chain must only exist within one share. If a child record already has a share reference set then you will get a CKErrorAlreadyShared error if you try to share any of that record's parents.
  
- Note that records in a hierarchy must only exist within one share. If a child record in a hierarchy already has a share reference set then you will get a CKErrorAlreadyShared error if you try to share any of that record's parents.
- 
+ Child records can be shared independently, even if they have a common parent.  For example:
+ Record A has two child records, Record B and Record C.
+     A
+    / \
+   B   C
+ 
+ These configurations are supported:
+   Record A part of Share 1, or
+   Record B part of Share 1, or
+   Record C part of Share 1, or
+   Record B part of Share 1, Record C part of Share 2
+ 
+ These configurations are not supported:
+   Record A part of Share 1, Record B part of Share 2, or
+     -- This is not allowed because Record B would then be in two shares; Share 1 by being Record A's child, and Share 2
+   Record A part of Share 1, Record C part of Share 2, or
+     -- This is not allowed because Record C would then be in two shares; Share 1 by being Record A's child, and Share 2
+   Record A part of Share 1, Record B part of Share 2, Record C part of Share 3
+     -- This is not allowed because both Record B and Record C would then each be in two shares.
+
  Whenever possible, it is suggested that you construct your parent hierarchies such that you will only need to share the topmost record of that hierarchy.
-*/
-@property (nonatomic, readonly, copy, nullable) CKReference *share NS_AVAILABLE(10_12, 10_0);
+ */
+@property (nonatomic, readonly, copy, nullable) CKReference *share API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+
+/* Use a parent reference to teach CloudKit about the hierarchy of your records. When a record is shared, all children of that record are also shared.
 
-/* Use a parent reference to teach CloudKit about the hierarchy of your records. This hierarchy of records will be shared if the share reference is set on a record.
- 
  A parent record reference must have CKReferenceActionNone set. You can create a separate reference with CKReferenceActionDeleteSelf if you would like your hierarchy cleaned up when the parent record is deleted.
- 
+
  The target of a parent reference must exist at save time - either already on the server, or part of the same CKModifyRecordsOperation batch.
 
- You are encouraged to set up the parent relationships as part of normal record saves, even if you're not planning on sharing records at this time.  
+ You are encouraged to set up the parent relationships as part of normal record saves, even if you're not planning on sharing records at this time.
  This allows you to share and unshare a hierarchy of records at a later date by only modifying the "top level" record, setting or clearing its 'share' reference.
-*/
-@property (nonatomic, copy, nullable) CKReference *parent NS_AVAILABLE(10_12, 10_0);
+ */
+@property (nonatomic, copy, nullable) CKReference *parent API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 /* Convenience wrappers around creating a CKReference to a parent record. The resulting CKReference will have action = CKReferenceActionNone */
-- (void)setParentReferenceFromRecord:(nullable CKRecord *)parentRecord NS_AVAILABLE(10_12, 10_0);
-- (void)setParentReferenceFromRecordID:(nullable CKRecordID *)parentRecordID NS_AVAILABLE(10_12, 10_0);
+- (void)setParentReferenceFromRecord:(nullable CKRecord *)parentRecord API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+- (void)setParentReferenceFromRecordID:(nullable CKRecordID *)parentRecordID API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 @end
 
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordID.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordID.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordID.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordID.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKRecordZoneID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKRecordID : NSObject <NSSecureCoding, NSCopying>
 
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h	2017-05-24 23:55:29.000000000 -0400
@@ -17,13 +17,12 @@
     /* Batched changes to this zone happen atomically */
     CKRecordZoneCapabilityAtomic         = 1 << 1,
     /* Records in this zone can be shared */
-    CKRecordZoneCapabilitySharing        NS_AVAILABLE(10_12, 10_0) = 1 << 2,
-} NS_AVAILABLE(10_10, 8_0);
+    CKRecordZoneCapabilitySharing        API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) = 1 << 2,
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-/* The default zone has no capabilities */
-CK_EXTERN NSString * const CKRecordZoneDefaultName NS_AVAILABLE(10_10, 8_0);
+CK_EXTERN NSString * const CKRecordZoneDefaultName API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKRecordZone : NSObject <NSSecureCoding, NSCopying>
 
 + (CKRecordZone *)defaultRecordZone;
@@ -34,7 +33,8 @@
 
 @property (nonatomic, readonly, strong) CKRecordZoneID *zoneID;
 
-/* Capabilities are not set until a record zone is saved */
+/* Capabilities on locally-created record zones are not valid until the record zone is saved.
+ Capabilities on record zones fetched from the server are valid. */
 @property (nonatomic, readonly, assign) CKRecordZoneCapabilities capabilities;
 
 @end
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZoneID.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZoneID.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZoneID.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZoneID.h	2017-05-24 23:55:29.000000000 -0400
@@ -8,7 +8,7 @@
 #import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKRecordZoneID : NSObject <NSSecureCoding, NSCopying>
 
 /* Zone names must be 255 characters or less. Most UTF-8 characters are valid. */
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKReference.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKReference.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKReference.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKReference.h	2017-05-24 23:55:29.000000000 -0400
@@ -15,10 +15,10 @@
     CKReferenceActionNone       = 0,
     /* When the referred record is deleted then this record is also deleted. */
     CKReferenceActionDeleteSelf = 1,
-} NS_ENUM_AVAILABLE(10_10, 8_0);
+} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKReference : NSObject <NSSecureCoding, NSCopying>
 
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKServerChangeToken.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKServerChangeToken.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKServerChangeToken.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKServerChangeToken.h	2017-05-24 23:55:29.000000000 -0400
@@ -8,7 +8,7 @@
 #import <CloudKit/CKDatabaseOperation.h>
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_10, 8_0)
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
 @interface CKServerChangeToken : NSObject <NSCopying, NSSecureCoding>
 - (instancetype)init NS_UNAVAILABLE;
 @end
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h	2016-10-28 20:37:58.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h	2017-05-24 23:55:29.000000000 -0400
@@ -11,16 +11,16 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-CK_EXTERN NSString * const CKRecordTypeShare NS_AVAILABLE(10_12, 10_0);
+CK_EXTERN NSString * const CKRecordTypeShare API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 /* Predefined keys in the CKRecordTypeShare schema.  They're used by the out of process UI flow to send a share, and as part of the share acceptance flow.  These are optional */
 
 /* Value is a string.  Example for a recipe sharing app: "Pot Roast" */
-CK_EXTERN NSString * const CKShareTitleKey NS_AVAILABLE(10_12, 10_0);
+CK_EXTERN NSString * const CKShareTitleKey API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 /* Value is a data blob suitable to pass into -[NSImage imageWithData:] or -[UIImage imageWithData:] */
-CK_EXTERN NSString * const CKShareThumbnailImageDataKey NS_AVAILABLE(10_12, 10_0);
+CK_EXTERN NSString * const CKShareThumbnailImageDataKey API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 /* Value is a string representing a UTI.  Example for a recipe sharing app: "com.mycompany.recipe" */
-CK_EXTERN NSString * const CKShareTypeKey NS_AVAILABLE(10_12, 10_0);
+CK_EXTERN NSString * const CKShareTypeKey API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 /*
  Like CKRecords, CKShares can store arbitrary key-value pairs.  They are modified and fetched in the same manner.
@@ -29,7 +29,7 @@
  A CKShare will appear in a CKFetchRecordChangesOperation's results set whenever the participant list is updated.  For that reason, you shouldn't place heavy key-value pairs in it.
  */
 
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKShare : CKRecord
 
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKShare, CKRecord, CKRecordID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKShareMetadata : NSObject <NSCopying, NSSecureCoding>
 
 @property (nonatomic, readonly, copy) NSString *containerIdentifier;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h	2016-10-28 21:46:24.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h	2017-05-24 23:55:29.000000000 -0400
@@ -15,7 +15,7 @@
     CKShareParticipantAcceptanceStatusPending,
     CKShareParticipantAcceptanceStatusAccepted,
     CKShareParticipantAcceptanceStatusRemoved,
-} NS_ENUM_AVAILABLE(10_12, 10_0);
+} API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 /* These permissions determine what share participants can do with records inside that share */
 typedef NS_ENUM(NSInteger, CKShareParticipantPermission) {
@@ -23,7 +23,7 @@
     CKShareParticipantPermissionNone,
     CKShareParticipantPermissionReadOnly,
     CKShareParticipantPermissionReadWrite,
-} NS_ENUM_AVAILABLE(10_12, 10_0);
+} API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 /* The participant type determines whether a participant can modify the list of participants on a share.
     - Owners can add private users
@@ -35,10 +35,10 @@
     CKShareParticipantTypeOwner = 1,
     CKShareParticipantTypePrivateUser = 3,
     CKShareParticipantTypePublicUser = 4,
-} NS_ENUM_AVAILABLE(10_12, 10_0);
+} API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKShareParticipant : NSObject <NSSecureCoding, NSCopying>
 
 /* Use CKFetchShareParticipantsOperation to create a CKShareParticipant object */
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSubscription.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSubscription.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSubscription.h	2016-09-21 20:19:38.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSubscription.h	2017-05-19 21:19:37.000000000 -0400
@@ -13,12 +13,12 @@
 typedef NS_ENUM(NSInteger, CKSubscriptionType) {
     CKSubscriptionTypeQuery                                     = 1,
     CKSubscriptionTypeRecordZone                                = 2,
-    CKSubscriptionTypeDatabase NS_ENUM_AVAILABLE(10_12, 10_0)   = 3,
-} NS_ENUM_AVAILABLE(10_10, 8_0) __WATCHOS_PROHIBITED;
+    CKSubscriptionTypeDatabase API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))   = 3,
+} API_AVAILABLE(macos(10.10), ios(8.0)) __WATCHOS_PROHIBITED;
 
 @class CKNotificationInfo, CKRecordZoneID;
 
-NS_CLASS_AVAILABLE(10_10, 8_0) __WATCHOS_PROHIBITED
+API_AVAILABLE(macos(10.10), ios(8.0)) __WATCHOS_PROHIBITED
 @interface CKSubscription : NSObject <NSSecureCoding, NSCopying>
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -26,7 +26,8 @@
 @property (nonatomic, readonly, copy) NSString *subscriptionID;
 @property (nonatomic, readonly, assign) CKSubscriptionType subscriptionType;
 
-/* Optional property describing the notification that will be sent when the subscription fires. */
+/* Describes the notification that will be sent when the subscription fires.
+ This property must be set to a non-nil value before saving the CKSubscription. */
 @property (nonatomic, copy, nullable) CKNotificationInfo *notificationInfo;
 
 @end
@@ -37,11 +38,11 @@
     CKQuerySubscriptionOptionsFiresOnRecordUpdate       = 1 << 1,
     CKQuerySubscriptionOptionsFiresOnRecordDeletion     = 1 << 2,
     CKQuerySubscriptionOptionsFiresOnce                 = 1 << 3,
-} NS_ENUM_AVAILABLE(10_12, 10_0) __WATCHOS_PROHIBITED;
+} API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) __WATCHOS_PROHIBITED;
 
 /* A subscription that fires whenever a change matching the predicate occurs.
  CKQuerySubscriptions are not supported in a sharedCloudDatabase */
-NS_CLASS_AVAILABLE(10_12, 10_0) __WATCHOS_PROHIBITED
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) __WATCHOS_PROHIBITED
 @interface CKQuerySubscription : CKSubscription <NSSecureCoding, NSCopying>
 
 - (instancetype)initWithRecordType:(NSString *)recordType predicate:(NSPredicate *)predicate options:(CKQuerySubscriptionOptions)querySubscriptionOptions;
@@ -69,7 +70,7 @@
 /* A subscription that fires whenever any change happens in the indicated Record Zone.
  The RecordZone must have the capability CKRecordZoneCapabilityFetchChanges
  CKRecordZoneSubscriptions are not supported in a sharedCloudDatabase */
-NS_CLASS_AVAILABLE(10_12, 10_0) __WATCHOS_PROHIBITED
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) __WATCHOS_PROHIBITED
 @interface CKRecordZoneSubscription : CKSubscription <NSSecureCoding, NSCopying>
 
 - (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID;
@@ -85,7 +86,7 @@
 
 /* This subscription fires whenever any change happens in the database that this subscription was saved in.
    CKDatabaseSubscription is only supported in the Private and Shared databases. */
-NS_CLASS_AVAILABLE(10_12, 10_0) __WATCHOS_PROHIBITED
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) __WATCHOS_PROHIBITED
 @interface CKDatabaseSubscription : CKSubscription <NSSecureCoding, NSCopying>
 
 - (instancetype)init;
@@ -103,7 +104,7 @@
    On tvOS, alerts, badges, sounds, and categories are not handled in push notifications. However,
    CKSubscriptions remain available to help you avoid polling the servers */
 
-NS_CLASS_AVAILABLE(10_10, 8_0) __WATCHOS_PROHIBITED
+API_AVAILABLE(macos(10.10), ios(8.0)) __WATCHOS_PROHIBITED
 @interface CKNotificationInfo : NSObject <NSSecureCoding, NSCopying>
 
 /* Optional alert string to display in a push notification. */
@@ -115,6 +116,24 @@
 /* A list of field names to take from the matching record that is used as substitution variables in a formatted alert string. */
 @property (nonatomic, copy, nullable) NSArray<NSString *> *alertLocalizationArgs __TVOS_PROHIBITED;
 
+/* Optional title of the alert to display in a push notification. */
+@property (nonatomic, copy, nullable) NSString *title API_AVAILABLE(macos(10.13), ios(11.0)) __TVOS_PROHIBITED;
+
+/* Instead of a raw title string, you may optionally specify a key for a localized string in your app's Localizable.strings file. */
+@property (nonatomic, copy, nullable) NSString *titleLocalizationKey API_AVAILABLE(macos(10.13), ios(11.0)) __TVOS_PROHIBITED;
+
+/* A list of field names to take from the matching record that is used as substitution variables in a formatted title string. */
+@property (nonatomic, copy, nullable) NSArray<NSString *> *titleLocalizationArgs API_AVAILABLE(macos(10.13), ios(11.0)) __TVOS_PROHIBITED;
+
+/* Optional subtitle of the alert to display in a push notification. */
+@property (nonatomic, copy, nullable) NSString *subtitle API_AVAILABLE(macos(10.13), ios(11.0)) __TVOS_PROHIBITED;
+
+/* Instead of a raw subtitle string, you may optionally specify a key for a localized string in your app's Localizable.strings file. */
+@property (nonatomic, copy, nullable) NSString *subtitleLocalizationKey API_AVAILABLE(macos(10.13), ios(11.0)) __TVOS_PROHIBITED;
+
+/* A list of field names to take from the matching record that is used as substitution variables in a formatted subtitle string. */
+@property (nonatomic, copy, nullable) NSArray<NSString *> *subtitleLocalizationArgs API_AVAILABLE(macos(10.13), ios(11.0)) __TVOS_PROHIBITED;
+
 /* A key for a localized string to be used as the alert action in a modal style notification. */
 @property (nonatomic, copy, nullable) NSString *alertActionLocalizationKey __TVOS_PROHIBITED;
 
@@ -134,14 +153,23 @@
 @property (nonatomic, copy, nullable) NSArray<NSString *> *desiredKeys;
 
 /* Indicates that the notification should increment the app's badge count. Default value is NO. */
-@property (nonatomic, assign) BOOL shouldBadge __TVOS_AVAILABLE(10_0);
+@property (nonatomic, assign) BOOL shouldBadge API_AVAILABLE(tvos(10.0));
 
 /* Indicates that the notification should be sent with the "content-available" flag to allow for background downloads in the application. 
-   Default value is NO. */
+   Default value is NO.
+   Setting this value to YES indicates you want a silent notification.  Silent notifications must not have an associated UI element (sound, badge, alert).
+ */
 @property (nonatomic, assign) BOOL shouldSendContentAvailable;
 
+/* Indicates that the notification should be sent with the "mutable-content" flag to allow a Notification Service app extension to modify or replace the push payload.  Default value is NO. */
+@property (nonatomic, assign) BOOL shouldSendMutableContent API_AVAILABLE(macos(10.13), ios(11.0));
+
+
 /* Optional property for the category to be sent with the push when this subscription fires. Categories allow you to present custom actions to the user on your push notifications. See UIMutableUserNotificationCategory for more information. */
-@property (nonatomic, copy, nullable) NSString *category NS_AVAILABLE(10_11, 9_0) __TVOS_PROHIBITED;
+@property (nonatomic, copy, nullable) NSString *category API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0)) __TVOS_PROHIBITED;
+
+/* Optional property specifying a field name to take from the matching record whose value is used as the apns-collapse-id header. See the APNs Notification API documentation for more information. */
+@property (nonatomic, copy, nullable) NSString *collapseIDKey API_AVAILABLE(macos(10.13), ios(11.0));
 
 @end
 
@@ -153,25 +181,25 @@
     CKSubscriptionOptionsFiresOnRecordUpdate       = 1 << 1,
     CKSubscriptionOptionsFiresOnRecordDeletion     = 1 << 2,
     CKSubscriptionOptionsFiresOnce                 = 1 << 3,
-} NS_ENUM_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKQuerySubscriptionOptions instead") __WATCHOS_PROHIBITED;
+} API_DEPRECATED("Use CKQuerySubscriptionOptions instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0)) __WATCHOS_PROHIBITED;
 
 @interface CKSubscription (CKSubscriptionDeprecated)
 
-- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Init the appropriate CKSubscription subclass");
+- (instancetype)initWithCoder:(NSCoder *)aDecoder API_DEPRECATED("Init the appropriate CKSubscription subclass", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
 
 /* Replaced with CKQuerySubscription */
-- (instancetype)initWithRecordType:(NSString *)recordType predicate:(NSPredicate *)predicate options:(CKSubscriptionOptions)subscriptionOptions NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKQuerySubscription instead");
-- (instancetype)initWithRecordType:(NSString *)recordType predicate:(NSPredicate *)predicate subscriptionID:(NSString *)subscriptionID options:(CKSubscriptionOptions)subscriptionOptions NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKQuerySubscription instead");
-@property (nonatomic, readonly, copy, nullable) NSString *recordType NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKQuerySubscription instead");
-@property (nonatomic, readonly, copy, nullable) NSPredicate *predicate NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKQuerySubscription instead");
+- (instancetype)initWithRecordType:(NSString *)recordType predicate:(NSPredicate *)predicate options:(CKSubscriptionOptions)subscriptionOptions API_DEPRECATED("Use CKQuerySubscription instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
+- (instancetype)initWithRecordType:(NSString *)recordType predicate:(NSPredicate *)predicate subscriptionID:(NSString *)subscriptionID options:(CKSubscriptionOptions)subscriptionOptions API_DEPRECATED("Use CKQuerySubscription instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
+@property (nonatomic, readonly, copy, nullable) NSString *recordType API_DEPRECATED("Use CKQuerySubscription instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
+@property (nonatomic, readonly, copy, nullable) NSPredicate *predicate API_DEPRECATED("Use CKQuerySubscription instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
 
 /* Replaced with CKQuerySubscriptionOptions */
-@property (nonatomic, readonly, assign) CKSubscriptionOptions subscriptionOptions NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKQuerySubscriptionOptions instead");
+@property (nonatomic, readonly, assign) CKSubscriptionOptions subscriptionOptions API_DEPRECATED("Use CKQuerySubscriptionOptions instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
 
 /* Replaced with CKRecordZoneSubscription */
-- (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID options:(CKSubscriptionOptions)subscriptionOptions NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKRecordZoneSubscription instead");
-- (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID subscriptionID:(NSString *)subscriptionID options:(CKSubscriptionOptions)subscriptionOptions NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKRecordZoneSubscription instead");
-@property (nonatomic, copy, nullable) CKRecordZoneID *zoneID NS_DEPRECATED(10_10, 10_12, 8_0, 10_0, "Use CKRecordZoneSubscription instead");
+- (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID options:(CKSubscriptionOptions)subscriptionOptions API_DEPRECATED("Use CKRecordZoneSubscription instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
+- (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID subscriptionID:(NSString *)subscriptionID options:(CKSubscriptionOptions)subscriptionOptions API_DEPRECATED("Use CKRecordZoneSubscription instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
+@property (nonatomic, copy, nullable) CKRecordZoneID *zoneID API_DEPRECATED("Use CKRecordZoneSubscription instead", macos(10.10, 10.12), ios(8.0, 10.0), tvos(9.0, 10.0), watchos(3.0, 3.0));
 
 @end
 
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentity.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentity.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentity.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentity.h	2017-05-24 23:55:29.000000000 -0400
@@ -11,16 +11,23 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKUserIdentity : NSObject <NSSecureCoding, NSCopying>
 // Use CKDiscoverUserIdentitiesOperation or CKFetchShareParticipantsOperation to create a CKUserIdentity
 - (instancetype)init NS_UNAVAILABLE;
 
 // This is the lookupInfo you passed in to CKDiscoverUserIdentitiesOperation or CKFetchShareParticipantsOperation
 @property (nonatomic, readonly, copy, nullable) CKUserIdentityLookupInfo *lookupInfo;
+
 @property (nonatomic, readonly, copy, nullable) NSPersonNameComponents *nameComponents;
 @property (nonatomic, readonly, copy, nullable) CKRecordID *userRecordID;
 
+// Identities discovered via CKDiscoverAllUserIdentitiesOperation correspond to entries in the local Contacts database.  These identities will have contactIdentifiers filled out, which your app may use to get additional information about the contacts that were discovered.  Multiple contactIdentifiers may exist for a single discovered user, as multiple contacts may contain the same email addresses or phone numbers.
+//  Returns individual, non-unified contacts.  To transform these identifiers into an array of unified contact identifiers, pass a CNContact.predicateForContacts(withIdentifiers:) predicate into CNContactStore.unifiedContacts(matching:keysToFetch:)
+//  See Contacts.framework and CNContact.identifier for more info.
+@property (nonatomic, readonly, copy) NSArray<NSString *> *contactIdentifiers API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) API_UNAVAILABLE(tvos);
+
+
 @property (nonatomic, readonly, assign) BOOL hasiCloudAccount;
 
 @end
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentityLookupInfo.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentityLookupInfo.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentityLookupInfo.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentityLookupInfo.h	2017-05-24 23:55:29.000000000 -0400
@@ -10,7 +10,7 @@
 @class CKRecordID;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE(10_12, 10_0)
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 @interface CKUserIdentityLookupInfo : NSObject <NSSecureCoding, NSCopying>
 - (instancetype)init NS_UNAVAILABLE;
 
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.apinotes /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.apinotes
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.apinotes	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.apinotes	2017-05-24 23:55:29.000000000 -0400
@@ -0,0 +1,73 @@
+---
+Name: CloudKit
+Classes:
+- Name: CKDatabase
+  Methods:
+  - Selector: 'fetchRecordWithID:completionHandler:'
+    MethodKind: Instance
+    SwiftName: 'fetch(withRecordID:completionHandler:)'
+  - Selector: 'deleteRecordWithID:completionHandler:'
+    MethodKind: Instance
+    SwiftName: 'delete(withRecordID:completionHandler:)'
+  - Selector: 'fetchRecordZoneWithID:completionHandler:'
+    MethodKind: Instance
+    SwiftName: 'fetch(withRecordZoneID:completionHandler:)'
+  - Selector: 'deleteRecordZoneWithID:completionHandler:'
+    MethodKind: Instance
+    SwiftName: 'delete(withRecordZoneID:completionHandler:)'
+  - Selector: 'fetchSubscriptionWithID:completionHandler:'
+    MethodKind: Instance
+    SwiftName: 'fetch(withSubscriptionID:completionHandler:)'
+  - Selector: 'deleteSubscriptionWithID:completionHandler:'
+    MethodKind: Instance
+    SwiftName: 'delete(withSubscriptionID:completionHandler:)'
+- Name: CKFetchRecordsOperation
+  Methods:
+  - Selector: 'fetchCurrentUserRecordOperation'
+    MethodKind: Class
+    SwiftName: 'fetchCurrentUserRecordOperation()'
+- Name: CKFetchRecordZonesOperation
+  Methods:
+  - Selector: 'fetchAllRecordZonesOperation'
+    MethodKind: Class
+    SwiftName: 'fetchAllRecordZonesOperation()'
+- Name: CKFetchSubscriptionsOperation
+  Methods:
+  - Selector: 'fetchAllSubscriptionsOperation'
+    MethodKind: Class
+    SwiftName: 'fetchAllSubscriptionsOperation()'
+- Name: CKRecord
+  Methods:
+  - Selector: 'setParentReferenceFromRecord:'
+    MethodKind: Instance
+    SwiftName: 'setParent(_:)'
+  - Selector: 'setParentReferenceFromRecordID:'
+    MethodKind: Instance
+    SwiftName: 'setParent(_:)'
+- Name: CKFetchShareMetadataOperation
+  Methods:
+  - Selector: 'initWithShareURLs:'
+    MethodKind: Instance
+    SwiftName: 'init(shareURLs:)'
+- Name: CKShare
+  Methods:
+  - Selector: 'initWithRootRecord:shareID:'
+    MethodKind: Instance
+    SwiftName: 'init(rootRecord:shareID:)'
+Tags:
+- Name: CKErrorCode
+  NSErrorDomain: CKErrorDomain
+
+SwiftVersions:
+- Version: 3
+  Classes:
+  - Name: CKFetchShareMetadataOperation
+    Methods:
+    - Selector: 'initWithShareURLs:'
+      MethodKind: Instance
+      SwiftName: 'init(share:)'
+  - Name: CKShare
+    Methods:
+    - Selector: 'initWithRootRecord:shareID:'
+      MethodKind: Instance
+      SwiftName: 'init(rootRecord:share:)'
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h	2016-09-23 21:59:51.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h	2017-05-24 23:55:29.000000000 -0400
@@ -30,6 +30,7 @@
 #import <CloudKit/CKUserIdentity.h>
 #import <CloudKit/CKUserIdentityLookupInfo.h>
 
+#import <CloudKit/CKOperationGroup.h>
 #import <CloudKit/CKOperation.h>
 #import <CloudKit/CKDatabaseOperation.h>
 #import <CloudKit/CKModifyRecordsOperation.h>
Clone this wiki locally