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 <Foundation/Foundation.h>
28 #import <CloudKit/CloudKit.h>
29 #import <ApplePushService/ApplePushService.h>
31 NS_ASSUME_NONNULL_BEGIN
33 /* CKModifyRecordZonesOperation */
34 @protocol CKKSModifyRecordZonesOperation
<NSObject
>
35 + (instancetype
)alloc
;
36 - (instancetype
)initWithRecordZonesToSave
:(nullable NSArray
<CKRecordZone
*> *)recordZonesToSave recordZoneIDsToDelete
:(nullable NSArray
<CKRecordZoneID
*> *)recordZoneIDsToDelete
;
38 @
property (nonatomic
, strong
, nullable
) CKDatabase
*database
;
39 @
property (nonatomic
, copy
, nullable
) NSArray
<CKRecordZone
*> *recordZonesToSave
;
40 @
property (nonatomic
, copy
, nullable
) NSArray
<CKRecordZoneID
*> *recordZoneIDsToDelete
;
41 @property NSOperationQueuePriority queuePriority
;
42 @property NSQualityOfService qualityOfService
;
44 @
property (nonatomic
, copy
, nullable
) void (^modifyRecordZonesCompletionBlock
)(NSArray
<CKRecordZone
*> * _Nullable savedRecordZones
, NSArray
<CKRecordZoneID
*> * _Nullable deletedRecordZoneIDs
, NSError
* _Nullable operationError
);
48 @interface
CKModifyRecordZonesOperation (SecCKKSModifyRecordZonesOperation
) <CKKSModifyRecordZonesOperation
>;
51 /* CKModifySubscriptionsOperation */
52 @protocol CKKSModifySubscriptionsOperation
<NSObject
>
53 + (instancetype
)alloc
;
54 - (instancetype
)initWithSubscriptionsToSave
:(nullable NSArray
<CKSubscription
*> *)subscriptionsToSave subscriptionIDsToDelete
:(nullable NSArray
<NSString
*> *)subscriptionIDsToDelete
;
56 @
property (nonatomic
, strong
, nullable
) CKDatabase
*database
;
57 @
property (nonatomic
, copy
, nullable
) NSArray
<CKSubscription
*> *subscriptionsToSave
;
58 @
property (nonatomic
, copy
, nullable
) NSArray
<NSString
*> *subscriptionIDsToDelete
;
59 @property NSOperationQueuePriority queuePriority
;
60 @property NSQualityOfService qualityOfService
;
61 @
property (nonatomic
, strong
, nullable
) CKOperationGroup
*group
;
63 @
property (nonatomic
, copy
, nullable
) void (^modifySubscriptionsCompletionBlock
)(NSArray
<CKSubscription
*> * _Nullable savedSubscriptions
, NSArray
<NSString
*> * _Nullable deletedSubscriptionIDs
, NSError
* _Nullable operationError
);
66 @interface
CKModifySubscriptionsOperation (SecCKKSModifySubscriptionsOperation
) <CKKSModifySubscriptionsOperation
>;
69 /* CKFetchRecordZoneChangesOperation */
70 @protocol CKKSFetchRecordZoneChangesOperation
<NSObject
>
71 + (instancetype
)alloc
;
72 - (instancetype
)initWithRecordZoneIDs
:(NSArray
<CKRecordZoneID
*> *)recordZoneIDs optionsByRecordZoneID
:(nullable NSDictionary
<CKRecordZoneID
*, CKFetchRecordZoneChangesOptions
*> *)optionsByRecordZoneID
;
74 @
property (nonatomic
, copy
, nullable
) NSArray
<CKRecordZoneID
*> *recordZoneIDs
;
75 @
property (nonatomic
, copy
, nullable
) NSDictionary
<CKRecordZoneID
*, CKFetchRecordZoneChangesOptions
*> *optionsByRecordZoneID
;
77 @
property (nonatomic
, assign
) BOOL fetchAllChanges
;
78 @
property (nonatomic
, copy
, nullable
) void (^recordChangedBlock
)(CKRecord
*record
);
79 @
property (nonatomic
, copy
, nullable
) void (^recordWithIDWasDeletedBlock
)(CKRecordID
*recordID
, NSString
*recordType
);
80 @
property (nonatomic
, copy
, nullable
) void (^recordZoneChangeTokensUpdatedBlock
)(CKRecordZoneID
*recordZoneID
, CKServerChangeToken
* _Nullable serverChangeToken
, NSData
* _Nullable clientChangeTokenData
);
81 @
property (nonatomic
, copy
, nullable
) void (^recordZoneFetchCompletionBlock
)(CKRecordZoneID
*recordZoneID
, CKServerChangeToken
* _Nullable serverChangeToken
, NSData
* _Nullable clientChangeTokenData
, BOOL moreComing
, NSError
* _Nullable recordZoneError
);
82 @
property (nonatomic
, copy
, nullable
) void (^fetchRecordZoneChangesCompletionBlock
)(NSError
* _Nullable operationError
);
84 @
property (nonatomic
, strong
, nullable
) CKOperationGroup
*group
;
87 @interface
CKFetchRecordZoneChangesOperation () <CKKSFetchRecordZoneChangesOperation
>;
90 /* CKFetchRecordsOperation */
91 @protocol CKKSFetchRecordsOperation
<NSObject
>
92 + (instancetype
)alloc
;
94 - (instancetype
)initWithRecordIDs
:(NSArray
<CKRecordID
*> *)recordIDs
;
96 @
property (nonatomic
, copy
, nullable
) NSArray
<CKRecordID
*> *recordIDs
;
97 @
property (nonatomic
, copy
, nullable
) NSArray
<NSString
*> *desiredKeys
;
98 @
property (nonatomic
, copy
, nullable
) void (^perRecordProgressBlock
)(CKRecordID
*recordID
, double progress
);
99 @
property (nonatomic
, copy
, nullable
) void (^perRecordCompletionBlock
)(CKRecord
* _Nullable record
, CKRecordID
* _Nullable recordID
, NSError
* _Nullable error
);
100 @
property (nonatomic
, copy
, nullable
) void (^fetchRecordsCompletionBlock
)(NSDictionary
<CKRecordID
* , CKRecord
*> * _Nullable recordsByRecordID
, NSError
* _Nullable operationError
);
103 @interface
CKFetchRecordsOperation () <CKKSFetchRecordsOperation
>
106 /* CKQueryOperation */
108 @protocol CKKSQueryOperation
<NSObject
>
109 + (instancetype
)alloc
;
110 - (instancetype
)initWithQuery
:(CKQuery
*)query
;
111 //Not implemented: - (instancetype)initWithCursor:(CKQueryCursor *)cursor;
113 @
property (nonatomic
, copy
, nullable
) CKQuery
*query
;
114 @
property (nonatomic
, copy
, nullable
) CKQueryCursor
*cursor
;
116 @
property (nonatomic
, copy
, nullable
) CKRecordZoneID
*zoneID
;
117 @
property (nonatomic
, assign
) NSUInteger resultsLimit
;
118 @
property (nonatomic
, copy
, nullable
) NSArray
<NSString
*> *desiredKeys
;
120 @
property (nonatomic
, copy
, nullable
) void (^recordFetchedBlock
)(CKRecord
*record
);
121 @
property (nonatomic
, copy
, nullable
) void (^queryCompletionBlock
)(CKQueryCursor
* _Nullable cursor
, NSError
* _Nullable operationError
);
124 @interface
CKQueryOperation () <CKKSQueryOperation
>
128 @protocol CKKSAPSConnection
<NSObject
>
129 + (instancetype
)alloc
;
130 - (id
)initWithEnvironmentName
:(NSString
*)environmentName namedDelegatePort
:(NSString
*)namedDelegatePort queue
:(dispatch_queue_t
)queue
;
132 - (void)setEnabledTopics
:(NSArray
*)enabledTopics
;
134 @
property (nonatomic
, readwrite
, assign
) id
<APSConnectionDelegate
> delegate
;
137 @interface
APSConnection (SecCKKSAPSConnection
) <CKKSAPSConnection
>;
140 /* NSNotificationCenter */
141 @protocol CKKSNSNotificationCenter
<NSObject
>
142 + (instancetype
)defaultCenter
;
143 - (void)addObserver
:(id
)observer selector
:(SEL
)aSelector name
:(nullable NSNotificationName
)aName object
:(nullable id
)anObject
;
144 - (void)removeObserver
:(id
)observer
;
146 @interface
NSNotificationCenter () <CKKSNSNotificationCenter
>
149 /* Since CKDatabase doesn't share any types with NSOperationQueue, tell the type system about addOperation */
150 @protocol CKKSOperationQueue
<NSObject
>
151 - (void)addOperation
:(NSOperation
*)operation
;
154 @interface
CKDatabase () <CKKSOperationQueue
>;
157 @interface
NSOperationQueue () <CKKSOperationQueue
>;
160 NS_ASSUME_NONNULL_END
162 #endif /* CloudKitDependencies_h */