2 * Copyright (c) 2016 Apple Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
21 * @APPLE_LICENSE_HEADER_END@
24 #ifndef CloudKitDependencies_h
25 #define CloudKitDependencies_h
27 #import <ApplePushService/ApplePushService.h>
28 #import <CloudKit/CloudKit.h>
29 #import <Foundation/Foundation.h>
31 NS_ASSUME_NONNULL_BEGIN
33 /* CKModifyRecordZonesOperation */
34 @protocol CKKSModifyRecordZonesOperation
<NSObject
>
35 + (instancetype
)alloc
;
36 - (instancetype
)initWithRecordZonesToSave
:(nullable NSArray
<CKRecordZone
*>*)recordZonesToSave
37 recordZoneIDsToDelete
:(nullable NSArray
<CKRecordZoneID
*>*)recordZoneIDsToDelete
;
39 @
property (nonatomic
, strong
, nullable
) CKDatabase
* database
;
40 @
property (nonatomic
, copy
, nullable
) NSArray
<CKRecordZone
*>* recordZonesToSave
;
41 @
property (nonatomic
, copy
, nullable
) NSArray
<CKRecordZoneID
*>* recordZoneIDsToDelete
;
42 @property NSOperationQueuePriority queuePriority
;
43 @property NSQualityOfService qualityOfService
;
44 @
property (nonatomic
, strong
, nullable
) CKOperationGroup
* group
;
46 @
property (nonatomic
, copy
, nullable
) void (^modifyRecordZonesCompletionBlock
)
47 (NSArray
<CKRecordZone
*>* _Nullable savedRecordZones
, NSArray
<CKRecordZoneID
*>* _Nullable deletedRecordZoneIDs
, NSError
* _Nullable operationError
);
51 @interface
CKModifyRecordZonesOperation (SecCKKSModifyRecordZonesOperation
) <CKKSModifyRecordZonesOperation
>
55 /* CKModifySubscriptionsOperation */
56 @protocol CKKSModifySubscriptionsOperation
<NSObject
>
57 + (instancetype
)alloc
;
58 - (instancetype
)initWithSubscriptionsToSave
:(nullable NSArray
<CKSubscription
*>*)subscriptionsToSave
59 subscriptionIDsToDelete
:(nullable NSArray
<NSString
*>*)subscriptionIDsToDelete
;
61 @
property (nonatomic
, strong
, nullable
) CKDatabase
* database
;
62 @
property (nonatomic
, copy
, nullable
) NSArray
<CKSubscription
*>* subscriptionsToSave
;
63 @
property (nonatomic
, copy
, nullable
) NSArray
<NSString
*>* subscriptionIDsToDelete
;
64 @property NSOperationQueuePriority queuePriority
;
65 @property NSQualityOfService qualityOfService
;
66 @
property (nonatomic
, strong
, nullable
) CKOperationGroup
* group
;
68 @
property (nonatomic
, copy
, nullable
) void (^modifySubscriptionsCompletionBlock
)
69 (NSArray
<CKSubscription
*>* _Nullable savedSubscriptions
, NSArray
<NSString
*>* _Nullable deletedSubscriptionIDs
, NSError
* _Nullable operationError
);
72 @interface
CKModifySubscriptionsOperation (SecCKKSModifySubscriptionsOperation
) <CKKSModifySubscriptionsOperation
>
76 /* CKFetchRecordZoneChangesOperation */
77 @protocol CKKSFetchRecordZoneChangesOperation
<NSObject
>
78 + (instancetype
)alloc
;
79 - (instancetype
)initWithRecordZoneIDs
:(NSArray
<CKRecordZoneID
*>*)recordZoneIDs
80 optionsByRecordZoneID
:(nullable NSDictionary
<CKRecordZoneID
*, CKFetchRecordZoneChangesOptions
*>*)optionsByRecordZoneID
;
82 @
property (nonatomic
, copy
, nullable
) NSArray
<CKRecordZoneID
*>* recordZoneIDs
;
83 @
property (nonatomic
, copy
, nullable
) NSDictionary
<CKRecordZoneID
*, CKFetchRecordZoneChangesOptions
*>* optionsByRecordZoneID
;
85 @
property (nonatomic
, assign
) BOOL fetchAllChanges
;
86 @
property (nonatomic
, copy
, nullable
) void (^recordChangedBlock
)(CKRecord
* record
);
87 @
property (nonatomic
, copy
, nullable
) void (^recordWithIDWasDeletedBlock
)(CKRecordID
* recordID
, NSString
* recordType
);
88 @
property (nonatomic
, copy
, nullable
) void (^recordZoneChangeTokensUpdatedBlock
)
89 (CKRecordZoneID
* recordZoneID
, CKServerChangeToken
* _Nullable serverChangeToken
, NSData
* _Nullable clientChangeTokenData
);
90 @
property (nonatomic
, copy
, nullable
) void (^recordZoneFetchCompletionBlock
)(CKRecordZoneID
* recordZoneID
,
91 CKServerChangeToken
* _Nullable serverChangeToken
,
92 NSData
* _Nullable clientChangeTokenData
,
94 NSError
* _Nullable recordZoneError
);
95 @
property (nonatomic
, copy
, nullable
) void (^fetchRecordZoneChangesCompletionBlock
)(NSError
* _Nullable operationError
);
97 @
property (nonatomic
, strong
, nullable
) CKOperationGroup
* group
;
100 @interface
CKFetchRecordZoneChangesOperation () <CKKSFetchRecordZoneChangesOperation
>
104 /* CKFetchRecordsOperation */
105 @protocol CKKSFetchRecordsOperation
<NSObject
>
106 + (instancetype
)alloc
;
107 - (instancetype
)init
;
108 - (instancetype
)initWithRecordIDs
:(NSArray
<CKRecordID
*>*)recordIDs
;
110 @
property (nonatomic
, copy
, nullable
) NSArray
<CKRecordID
*>* recordIDs
;
111 @
property (nonatomic
, copy
, nullable
) NSArray
<NSString
*>* desiredKeys
;
112 @
property (nonatomic
, copy
, nullable
) CKOperationConfiguration
* configuration
;
113 @
property (nonatomic
, copy
, nullable
) void (^perRecordProgressBlock
)(CKRecordID
* recordID
, double progress
);
114 @
property (nonatomic
, copy
, nullable
) void (^perRecordCompletionBlock
)
115 (CKRecord
* _Nullable record
, CKRecordID
* _Nullable recordID
, NSError
* _Nullable error
);
116 @
property (nonatomic
, copy
, nullable
) void (^fetchRecordsCompletionBlock
)
117 (NSDictionary
<CKRecordID
*, CKRecord
*>* _Nullable recordsByRecordID
, NSError
* _Nullable operationError
);
120 @interface
CKFetchRecordsOperation () <CKKSFetchRecordsOperation
>
123 /* CKQueryOperation */
125 @protocol CKKSQueryOperation
<NSObject
>
126 + (instancetype
)alloc
;
127 - (instancetype
)initWithQuery
:(CKQuery
*)query
;
128 //Not implemented: - (instancetype)initWithCursor:(CKQueryCursor *)cursor;
130 @
property (nonatomic
, copy
, nullable
) CKQuery
* query
;
131 @
property (nonatomic
, copy
, nullable
) CKQueryCursor
* cursor
;
133 @
property (nonatomic
, copy
, nullable
) CKRecordZoneID
* zoneID
;
134 @
property (nonatomic
, assign
) NSUInteger resultsLimit
;
135 @
property (nonatomic
, copy
, nullable
) NSArray
<NSString
*>* desiredKeys
;
137 @
property (nonatomic
, copy
, nullable
) void (^recordFetchedBlock
)(CKRecord
* record
);
138 @
property (nonatomic
, copy
, nullable
) void (^queryCompletionBlock
)(CKQueryCursor
* _Nullable cursor
, NSError
* _Nullable operationError
);
141 @interface
CKQueryOperation () <CKKSQueryOperation
>
145 @protocol CKKSAPSConnection
<NSObject
>
146 + (instancetype
)alloc
;
147 - (id
)initWithEnvironmentName
:(NSString
*)environmentName
148 namedDelegatePort
:(NSString
*)namedDelegatePort
149 queue
:(dispatch_queue_t
)queue
;
151 - (void)setEnabledTopics
:(NSArray
*)enabledTopics
;
153 @
property (nonatomic
, readwrite
, assign
) id
<APSConnectionDelegate
> delegate
;
156 @interface
APSConnection (SecCKKSAPSConnection
) <CKKSAPSConnection
>
159 /* NSNotificationCenter */
160 @protocol CKKSNSNotificationCenter
<NSObject
>
161 + (instancetype
)defaultCenter
;
162 - (void)addObserver
:(id
)observer selector
:(SEL
)aSelector name
:(nullable NSNotificationName
)aName object
:(nullable id
)anObject
;
163 - (void)removeObserver
:(id
)observer
;
165 @interface
NSNotificationCenter () <CKKSNSNotificationCenter
>
168 /* Since CKDatabase doesn't share any types with NSOperationQueue, tell the type system about addOperation */
169 @protocol CKKSOperationQueue
<NSObject
>
170 - (void)addOperation
:(NSOperation
*)operation
;
173 @interface
CKDatabase () <CKKSOperationQueue
>
176 @interface
NSOperationQueue () <CKKSOperationQueue
>
179 NS_ASSUME_NONNULL_END
181 #endif /* CloudKitDependencies_h */