Documentation Archive Developer
Search

CloudKit Changes for Swift

CloudKit

Removed CKApplicationPermissions.init(_: UInt)
Removed CKRecord.setObject(_: CKRecordValue!, forKeyedSubscript: String!)
Removed CKRecordZoneCapabilities.init(_: UInt)
Removed CKSubscriptionOptions.init(_: UInt)
Raw Value Type
From--
ToInt

DeclarationProtocols
From
struct CKApplicationPermissions : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue rawValue: UInt)
    static var PermissionUserDiscoverability: CKApplicationPermissions { get }
}
RawOptionSetType
To
struct CKApplicationPermissions : OptionSetType {
    init(rawValue rawValue: UInt)
    static var UserDiscoverability: CKApplicationPermissions { get }
}
OptionSetType

Declaration
From
static var PermissionUserDiscoverability: CKApplicationPermissions { get }
To
static var UserDiscoverability: CKApplicationPermissions { get }

Raw Value Type
From--
ToInt

Modified CKAsset
Declaration
From
class CKAsset : NSObject {
    init!()
    init!(fileURL fileURL: NSURL!)
    @NSCopying var fileURL: NSURL! { get }
}
extension CKAsset : CKRecordValue, NSObjectProtocol {
}
To
class CKAsset : NSObject {
    init()
    init(fileURL fileURL: NSURL)
    @NSCopying var fileURL: NSURL { get }
}
extension CKAsset : CKRecordValue {
}

Declaration
From
@NSCopying var fileURL: NSURL! { get }
To
@NSCopying var fileURL: NSURL { get }

Declaration
From
init!(fileURL fileURL: NSURL!)
To
init(fileURL fileURL: NSURL)

Modified CKContainer
Declaration
From
class CKContainer : NSObject {
    init!()
    class func defaultContainer() -> CKContainer!
    init!(identifier containerIdentifier: String!) -> CKContainer
    class func containerWithIdentifier(_ containerIdentifier: String!) -> CKContainer!
    var containerIdentifier: String! { get }
    func addOperation(_ operation: CKOperation!)
}
extension CKContainer {
    var privateCloudDatabase: CKDatabase! { get }
    var publicCloudDatabase: CKDatabase! { get }
}
extension CKContainer {
    func accountStatusWithCompletionHandler(_ completionHandler: ((CKAccountStatus, NSError!) -> Void)!)
}
extension CKContainer {
    func statusForApplicationPermission(_ applicationPermission: CKApplicationPermissions, completionHandler completionHandler: CKApplicationPermissionBlock!)
    func requestApplicationPermission(_ applicationPermission: CKApplicationPermissions, completionHandler completionHandler: CKApplicationPermissionBlock!)
}
extension CKContainer {
    func fetchUserRecordIDWithCompletionHandler(_ completionHandler: ((CKRecordID!, NSError!) -> Void)!)
    func discoverAllContactUserInfosWithCompletionHandler(_ completionHandler: (([AnyObject]!, NSError!) -> Void)!)
    func discoverUserInfoWithEmailAddress(_ email: String!, completionHandler completionHandler: ((CKDiscoveredUserInfo!, NSError!) -> Void)!)
    func discoverUserInfoWithUserRecordID(_ userRecordID: CKRecordID!, completionHandler completionHandler: ((CKDiscoveredUserInfo!, NSError!) -> Void)!)
}
To
class CKContainer : NSObject {
    init()
    class func defaultContainer() -> CKContainer
     init(identifier containerIdentifier: String)
    class func containerWithIdentifier(_ containerIdentifier: String) -> CKContainer
    var containerIdentifier: String? { get }
    func addOperation(_ operation: CKOperation)
}
extension CKContainer {
    var privateCloudDatabase: CKDatabase { get }
    var publicCloudDatabase: CKDatabase { get }
}
extension CKContainer {
    func accountStatusWithCompletionHandler(_ completionHandler: (CKAccountStatus, NSError?) -> Void)
}
extension CKContainer {
    func statusForApplicationPermission(_ applicationPermission: CKApplicationPermissions, completionHandler completionHandler: CKApplicationPermissionBlock)
    func requestApplicationPermission(_ applicationPermission: CKApplicationPermissions, completionHandler completionHandler: CKApplicationPermissionBlock)
}
extension CKContainer {
    func fetchUserRecordIDWithCompletionHandler(_ completionHandler: (CKRecordID?, NSError?) -> Void)
    func discoverAllContactUserInfosWithCompletionHandler(_ completionHandler: ([CKDiscoveredUserInfo]?, NSError?) -> Void)
    func discoverUserInfoWithEmailAddress(_ email: String, completionHandler completionHandler: (CKDiscoveredUserInfo?, NSError?) -> Void)
    func discoverUserInfoWithUserRecordID(_ userRecordID: CKRecordID, completionHandler completionHandler: (CKDiscoveredUserInfo?, NSError?) -> Void)
}

Declaration
From
func accountStatusWithCompletionHandler(_ completionHandler: ((CKAccountStatus, NSError!) -> Void)!)
To
func accountStatusWithCompletionHandler(_ completionHandler: (CKAccountStatus, NSError?) -> Void)

Declaration
From
func addOperation(_ operation: CKOperation!)
To
func addOperation(_ operation: CKOperation)

Declaration
From
var containerIdentifier: String! { get }
To
var containerIdentifier: String? { get }

Declaration
From
class func defaultContainer() -> CKContainer!
To
class func defaultContainer() -> CKContainer

Declaration
From
func discoverAllContactUserInfosWithCompletionHandler(_ completionHandler: (([AnyObject]!, NSError!) -> Void)!)
To
func discoverAllContactUserInfosWithCompletionHandler(_ completionHandler: ([CKDiscoveredUserInfo]?, NSError?) -> Void)

Declaration
From
func discoverUserInfoWithEmailAddress(_ email: String!, completionHandler completionHandler: ((CKDiscoveredUserInfo!, NSError!) -> Void)!)
To
func discoverUserInfoWithEmailAddress(_ email: String, completionHandler completionHandler: (CKDiscoveredUserInfo?, NSError?) -> Void)

Declaration
From
func discoverUserInfoWithUserRecordID(_ userRecordID: CKRecordID!, completionHandler completionHandler: ((CKDiscoveredUserInfo!, NSError!) -> Void)!)
To
func discoverUserInfoWithUserRecordID(_ userRecordID: CKRecordID, completionHandler completionHandler: (CKDiscoveredUserInfo?, NSError?) -> Void)

Declaration
From
func fetchUserRecordIDWithCompletionHandler(_ completionHandler: ((CKRecordID!, NSError!) -> Void)!)
To
func fetchUserRecordIDWithCompletionHandler(_ completionHandler: (CKRecordID?, NSError?) -> Void)

Declaration
From
init!(identifier containerIdentifier: String!) -> CKContainer
To
init(identifier containerIdentifier: String)

Declaration
From
var privateCloudDatabase: CKDatabase! { get }
To
var privateCloudDatabase: CKDatabase { get }

Declaration
From
var publicCloudDatabase: CKDatabase! { get }
To
var publicCloudDatabase: CKDatabase { get }

Declaration
From
func requestApplicationPermission(_ applicationPermission: CKApplicationPermissions, completionHandler completionHandler: CKApplicationPermissionBlock!)
To
func requestApplicationPermission(_ applicationPermission: CKApplicationPermissions, completionHandler completionHandler: CKApplicationPermissionBlock)

Declaration
From
func statusForApplicationPermission(_ applicationPermission: CKApplicationPermissions, completionHandler completionHandler: CKApplicationPermissionBlock!)
To
func statusForApplicationPermission(_ applicationPermission: CKApplicationPermissions, completionHandler completionHandler: CKApplicationPermissionBlock)

Modified CKDatabase
Declaration
From
class CKDatabase : NSObject {
    init!()
    func addOperation(_ operation: CKDatabaseOperation!)
}
extension CKDatabase {
    func fetchRecordWithID(_ recordID: CKRecordID!, completionHandler completionHandler: ((CKRecord!, NSError!) -> Void)!)
    func saveRecord(_ record: CKRecord!, completionHandler completionHandler: ((CKRecord!, NSError!) -> Void)!)
    func deleteRecordWithID(_ recordID: CKRecordID!, completionHandler completionHandler: ((CKRecordID!, NSError!) -> Void)!)
    func performQuery(_ query: CKQuery!, inZoneWithID zoneID: CKRecordZoneID!, completionHandler completionHandler: (([AnyObject]!, NSError!) -> Void)!)
    func fetchAllRecordZonesWithCompletionHandler(_ completionHandler: (([AnyObject]!, NSError!) -> Void)!)
    func fetchRecordZoneWithID(_ zoneID: CKRecordZoneID!, completionHandler completionHandler: ((CKRecordZone!, NSError!) -> Void)!)
    func saveRecordZone(_ zone: CKRecordZone!, completionHandler completionHandler: ((CKRecordZone!, NSError!) -> Void)!)
    func deleteRecordZoneWithID(_ zoneID: CKRecordZoneID!, completionHandler completionHandler: ((CKRecordZoneID!, NSError!) -> Void)!)
    func fetchSubscriptionWithID(_ subscriptionID: String!, completionHandler completionHandler: ((CKSubscription!, NSError!) -> Void)!)
    func fetchAllSubscriptionsWithCompletionHandler(_ completionHandler: (([AnyObject]!, NSError!) -> Void)!)
    func saveSubscription(_ subscription: CKSubscription!, completionHandler completionHandler: ((CKSubscription!, NSError!) -> Void)!)
    func deleteSubscriptionWithID(_ subscriptionID: String!, completionHandler completionHandler: ((String!, NSError!) -> Void)!)
}
To
class CKDatabase : NSObject {
    init()
    func addOperation(_ operation: CKDatabaseOperation)
}
extension CKDatabase {
    func fetchRecordWithID(_ recordID: CKRecordID, completionHandler completionHandler: (CKRecord?, NSError?) -> Void)
    func saveRecord(_ record: CKRecord, completionHandler completionHandler: (CKRecord?, NSError?) -> Void)
    func deleteRecordWithID(_ recordID: CKRecordID, completionHandler completionHandler: (CKRecordID?, NSError?) -> Void)
    func performQuery(_ query: CKQuery, inZoneWithID zoneID: CKRecordZoneID?, completionHandler completionHandler: ([CKRecord]?, NSError?) -> Void)
    func fetchAllRecordZonesWithCompletionHandler(_ completionHandler: ([CKRecordZone]?, NSError?) -> Void)
    func fetchRecordZoneWithID(_ zoneID: CKRecordZoneID, completionHandler completionHandler: (CKRecordZone?, NSError?) -> Void)
    func saveRecordZone(_ zone: CKRecordZone, completionHandler completionHandler: (CKRecordZone?, NSError?) -> Void)
    func deleteRecordZoneWithID(_ zoneID: CKRecordZoneID, completionHandler completionHandler: (CKRecordZoneID?, NSError?) -> Void)
    func fetchSubscriptionWithID(_ subscriptionID: String, completionHandler completionHandler: (CKSubscription?, NSError?) -> Void)
    func fetchAllSubscriptionsWithCompletionHandler(_ completionHandler: ([CKSubscription]?, NSError?) -> Void)
    func saveSubscription(_ subscription: CKSubscription, completionHandler completionHandler: (CKSubscription?, NSError?) -> Void)
    func deleteSubscriptionWithID(_ subscriptionID: String, completionHandler completionHandler: (String?, NSError?) -> Void)
}

Declaration
From
func addOperation(_ operation: CKDatabaseOperation!)
To
func addOperation(_ operation: CKDatabaseOperation)

Declaration
From
func deleteRecordWithID(_ recordID: CKRecordID!, completionHandler completionHandler: ((CKRecordID!, NSError!) -> Void)!)
To
func deleteRecordWithID(_ recordID: CKRecordID, completionHandler completionHandler: (CKRecordID?, NSError?) -> Void)

Declaration
From
func deleteRecordZoneWithID(_ zoneID: CKRecordZoneID!, completionHandler completionHandler: ((CKRecordZoneID!, NSError!) -> Void)!)
To
func deleteRecordZoneWithID(_ zoneID: CKRecordZoneID, completionHandler completionHandler: (CKRecordZoneID?, NSError?) -> Void)

Declaration
From
func deleteSubscriptionWithID(_ subscriptionID: String!, completionHandler completionHandler: ((String!, NSError!) -> Void)!)
To
func deleteSubscriptionWithID(_ subscriptionID: String, completionHandler completionHandler: (String?, NSError?) -> Void)

Declaration
From
func fetchAllRecordZonesWithCompletionHandler(_ completionHandler: (([AnyObject]!, NSError!) -> Void)!)
To
func fetchAllRecordZonesWithCompletionHandler(_ completionHandler: ([CKRecordZone]?, NSError?) -> Void)

Declaration
From
func fetchAllSubscriptionsWithCompletionHandler(_ completionHandler: (([AnyObject]!, NSError!) -> Void)!)
To
func fetchAllSubscriptionsWithCompletionHandler(_ completionHandler: ([CKSubscription]?, NSError?) -> Void)

Declaration
From
func fetchRecordWithID(_ recordID: CKRecordID!, completionHandler completionHandler: ((CKRecord!, NSError!) -> Void)!)
To
func fetchRecordWithID(_ recordID: CKRecordID, completionHandler completionHandler: (CKRecord?, NSError?) -> Void)

Declaration
From
func fetchRecordZoneWithID(_ zoneID: CKRecordZoneID!, completionHandler completionHandler: ((CKRecordZone!, NSError!) -> Void)!)
To
func fetchRecordZoneWithID(_ zoneID: CKRecordZoneID, completionHandler completionHandler: (CKRecordZone?, NSError?) -> Void)

Declaration
From
func fetchSubscriptionWithID(_ subscriptionID: String!, completionHandler completionHandler: ((CKSubscription!, NSError!) -> Void)!)
To
func fetchSubscriptionWithID(_ subscriptionID: String, completionHandler completionHandler: (CKSubscription?, NSError?) -> Void)

Declaration
From
func performQuery(_ query: CKQuery!, inZoneWithID zoneID: CKRecordZoneID!, completionHandler completionHandler: (([AnyObject]!, NSError!) -> Void)!)
To
func performQuery(_ query: CKQuery, inZoneWithID zoneID: CKRecordZoneID?, completionHandler completionHandler: ([CKRecord]?, NSError?) -> Void)

Declaration
From
func saveRecord(_ record: CKRecord!, completionHandler completionHandler: ((CKRecord!, NSError!) -> Void)!)
To
func saveRecord(_ record: CKRecord, completionHandler completionHandler: (CKRecord?, NSError?) -> Void)

Declaration
From
func saveRecordZone(_ zone: CKRecordZone!, completionHandler completionHandler: ((CKRecordZone!, NSError!) -> Void)!)
To
func saveRecordZone(_ zone: CKRecordZone, completionHandler completionHandler: (CKRecordZone?, NSError?) -> Void)

Declaration
From
func saveSubscription(_ subscription: CKSubscription!, completionHandler completionHandler: ((CKSubscription!, NSError!) -> Void)!)
To
func saveSubscription(_ subscription: CKSubscription, completionHandler completionHandler: (CKSubscription?, NSError?) -> Void)

Declaration
From
class CKDatabaseOperation : CKOperation {
    var database: CKDatabase!
}
To
class CKDatabaseOperation : CKOperation {
    var database: CKDatabase?
}

Declaration
From
var database: CKDatabase!
To
var database: CKDatabase?

Declaration
From
class CKDiscoverAllContactsOperation : CKOperation {
    init!()
    var discoverAllContactsCompletionBlock: (([AnyObject]!, NSError!) -> Void)!
}
To
class CKDiscoverAllContactsOperation : CKOperation {
    init()
    var discoverAllContactsCompletionBlock: (([CKDiscoveredUserInfo]?, NSError?) -> Void)?
}

Declaration
From
var discoverAllContactsCompletionBlock: (([AnyObject]!, NSError!) -> Void)!
To
var discoverAllContactsCompletionBlock: (([CKDiscoveredUserInfo]?, NSError?) -> Void)?

Declaration
From
init!()
To
init()

Declaration
From
class CKDiscoveredUserInfo : NSObject {
    init!()
    @NSCopying var userRecordID: CKRecordID! { get }
    var firstName: String! { get }
    var lastName: String! { get }
}
To
class CKDiscoveredUserInfo : NSObject {
    init()
    @NSCopying var userRecordID: CKRecordID? { get }
    var firstName: String? { get }
    var lastName: String? { get }
    @NSCopying var displayContact: CNContact? { get }
}

DeclarationDeprecation
From
var firstName: String! { get }
--
To
var firstName: String? { get }
iOS 9.0

DeclarationDeprecation
From
var lastName: String! { get }
--
To
var lastName: String? { get }
iOS 9.0

Declaration
From
@NSCopying var userRecordID: CKRecordID! { get }
To
@NSCopying var userRecordID: CKRecordID? { get }

Declaration
From
class CKDiscoverUserInfosOperation : CKOperation {
    init!()
    convenience init!(emailAddresses emailAddresses: [AnyObject]!, userRecordIDs userRecordIDs: [AnyObject]!)
    var emailAddresses: [AnyObject]!
    var userRecordIDs: [AnyObject]!
    var discoverUserInfosCompletionBlock: (([NSObject : AnyObject]!, [NSObject : AnyObject]!, NSError!) -> Void)!
}
To
class CKDiscoverUserInfosOperation : CKOperation {
    init()
    convenience init(emailAddresses emailAddresses: [String]?, userRecordIDs userRecordIDs: [CKRecordID]?)
    var emailAddresses: [String]?
    var userRecordIDs: [CKRecordID]?
    var discoverUserInfosCompletionBlock: (([String : CKDiscoveredUserInfo]?, [CKRecordID : CKDiscoveredUserInfo]?, NSError?) -> Void)?
}

Declaration
From
var discoverUserInfosCompletionBlock: (([NSObject : AnyObject]!, [NSObject : AnyObject]!, NSError!) -> Void)!
To
var discoverUserInfosCompletionBlock: (([String : CKDiscoveredUserInfo]?, [CKRecordID : CKDiscoveredUserInfo]?, NSError?) -> Void)?

Declaration
From
var emailAddresses: [AnyObject]!
To
var emailAddresses: [String]?

Declaration
From
init!()
To
init()

Declaration
From
convenience init!(emailAddresses emailAddresses: [AnyObject]!, userRecordIDs userRecordIDs: [AnyObject]!)
To
convenience init(emailAddresses emailAddresses: [String]?, userRecordIDs userRecordIDs: [CKRecordID]?)

Declaration
From
var userRecordIDs: [AnyObject]!
To
var userRecordIDs: [CKRecordID]?

DeclarationProtocolsRaw Value Type
From
enum CKErrorCode : Int {
    case InternalError
    case PartialFailure
    case NetworkUnavailable
    case NetworkFailure
    case BadContainer
    case ServiceUnavailable
    case RequestRateLimited
    case MissingEntitlement
    case NotAuthenticated
    case PermissionFailure
    case UnknownItem
    case InvalidArguments
    case ResultsTruncated
    case ServerRecordChanged
    case ServerRejectedRequest
    case AssetFileNotFound
    case AssetFileModified
    case IncompatibleVersion
    case ConstraintViolation
    case OperationCancelled
    case ChangeTokenExpired
    case BatchRequestFailed
    case ZoneBusy
    case BadDatabase
    case QuotaExceeded
    case ZoneNotFound
    case LimitExceeded
    case UserDeletedZone
}
Equatable, Hashable, RawRepresentable--
To
enum CKErrorCode : Int {
    case InternalError
    case PartialFailure
    case NetworkUnavailable
    case NetworkFailure
    case BadContainer
    case ServiceUnavailable
    case RequestRateLimited
    case MissingEntitlement
    case NotAuthenticated
    case PermissionFailure
    case UnknownItem
    case InvalidArguments
    case ResultsTruncated
    case ServerRecordChanged
    case ServerRejectedRequest
    case AssetFileNotFound
    case AssetFileModified
    case IncompatibleVersion
    case ConstraintViolation
    case OperationCancelled
    case ChangeTokenExpired
    case BatchRequestFailed
    case ZoneBusy
    case BadDatabase
    case QuotaExceeded
    case ZoneNotFound
    case LimitExceeded
    case UserDeletedZone
}
extension CKErrorCode : Hashable, Equatable, __BridgedNSError, ErrorType, RawRepresentable, _ObjectiveCBridgeableErrorType, _BridgedNSError {
}
extension CKErrorCode : Hashable, Equatable, __BridgedNSError, ErrorType, RawRepresentable, _ObjectiveCBridgeableErrorType, _BridgedNSError {
}
Equatable, ErrorType, Hashable, RawRepresentableInt

Declaration
From
class CKFetchNotificationChangesOperation : CKOperation {
    init!(previousServerChangeToken previousServerChangeToken: CKServerChangeToken!)
    @NSCopying var previousServerChangeToken: CKServerChangeToken!
    var resultsLimit: Int
    var moreComing: Bool { get }
    var notificationChangedBlock: ((CKNotification!) -> Void)!
    var fetchNotificationChangesCompletionBlock: ((CKServerChangeToken!, NSError!) -> Void)!
}
To
class CKFetchNotificationChangesOperation : CKOperation {
    init(previousServerChangeToken previousServerChangeToken: CKServerChangeToken?)
    @NSCopying var previousServerChangeToken: CKServerChangeToken?
    var resultsLimit: Int
    var moreComing: Bool { get }
    var notificationChangedBlock: ((CKNotification) -> Void)?
    var fetchNotificationChangesCompletionBlock: ((CKServerChangeToken?, NSError?) -> Void)?
}

Declaration
From
var fetchNotificationChangesCompletionBlock: ((CKServerChangeToken!, NSError!) -> Void)!
To
var fetchNotificationChangesCompletionBlock: ((CKServerChangeToken?, NSError?) -> Void)?

Declaration
From
init!(previousServerChangeToken previousServerChangeToken: CKServerChangeToken!)
To
init(previousServerChangeToken previousServerChangeToken: CKServerChangeToken?)

Declaration
From
var notificationChangedBlock: ((CKNotification!) -> Void)!
To
var notificationChangedBlock: ((CKNotification) -> Void)?

Declaration
From
@NSCopying var previousServerChangeToken: CKServerChangeToken!
To
@NSCopying var previousServerChangeToken: CKServerChangeToken?

Declaration
From
class CKFetchRecordChangesOperation : CKDatabaseOperation {
    init!(recordZoneID recordZoneID: CKRecordZoneID!, previousServerChangeToken previousServerChangeToken: CKServerChangeToken!)
    @NSCopying var recordZoneID: CKRecordZoneID!
    @NSCopying var previousServerChangeToken: CKServerChangeToken!
    var resultsLimit: Int
    var desiredKeys: [AnyObject]!
    var recordChangedBlock: ((CKRecord!) -> Void)!
    var recordWithIDWasDeletedBlock: ((CKRecordID!) -> Void)!
    var moreComing: Bool { get }
    var fetchRecordChangesCompletionBlock: ((CKServerChangeToken!, NSData!, NSError!) -> Void)!
}
To
class CKFetchRecordChangesOperation : CKDatabaseOperation {
    init(recordZoneID recordZoneID: CKRecordZoneID, previousServerChangeToken previousServerChangeToken: CKServerChangeToken?)
    @NSCopying var recordZoneID: CKRecordZoneID
    @NSCopying var previousServerChangeToken: CKServerChangeToken?
    var resultsLimit: Int
    var desiredKeys: [String]?
    var recordChangedBlock: ((CKRecord) -> Void)?
    var recordWithIDWasDeletedBlock: ((CKRecordID) -> Void)?
    var moreComing: Bool { get }
    var fetchRecordChangesCompletionBlock: ((CKServerChangeToken?, NSData?, NSError?) -> Void)?
}

Declaration
From
var desiredKeys: [AnyObject]!
To
var desiredKeys: [String]?

Declaration
From
var fetchRecordChangesCompletionBlock: ((CKServerChangeToken!, NSData!, NSError!) -> Void)!
To
var fetchRecordChangesCompletionBlock: ((CKServerChangeToken?, NSData?, NSError?) -> Void)?

Declaration
From
init!(recordZoneID recordZoneID: CKRecordZoneID!, previousServerChangeToken previousServerChangeToken: CKServerChangeToken!)
To
init(recordZoneID recordZoneID: CKRecordZoneID, previousServerChangeToken previousServerChangeToken: CKServerChangeToken?)

Declaration
From
@NSCopying var previousServerChangeToken: CKServerChangeToken!
To
@NSCopying var previousServerChangeToken: CKServerChangeToken?

Declaration
From
var recordChangedBlock: ((CKRecord!) -> Void)!
To
var recordChangedBlock: ((CKRecord) -> Void)?

Declaration
From
var recordWithIDWasDeletedBlock: ((CKRecordID!) -> Void)!
To
var recordWithIDWasDeletedBlock: ((CKRecordID) -> Void)?

Declaration
From
@NSCopying var recordZoneID: CKRecordZoneID!
To
@NSCopying var recordZoneID: CKRecordZoneID

Declaration
From
class CKFetchRecordsOperation : CKDatabaseOperation {
    init!()
    convenience init!(recordIDs recordIDs: [AnyObject]!)
    class func fetchCurrentUserRecordOperation() -> Self!
    var recordIDs: [AnyObject]!
    var desiredKeys: [AnyObject]!
    var perRecordProgressBlock: ((CKRecordID!, Double) -> Void)!
    var perRecordCompletionBlock: ((CKRecord!, CKRecordID!, NSError!) -> Void)!
    var fetchRecordsCompletionBlock: (([NSObject : AnyObject]!, NSError!) -> Void)!
}
To
class CKFetchRecordsOperation : CKDatabaseOperation {
    init()
    convenience init(recordIDs recordIDs: [CKRecordID])
    class func fetchCurrentUserRecordOperation() -> Self
    var recordIDs: [CKRecordID]?
    var desiredKeys: [String]?
    var perRecordProgressBlock: ((CKRecordID, Double) -> Void)?
    var perRecordCompletionBlock: ((CKRecord?, CKRecordID?, NSError?) -> Void)?
    var fetchRecordsCompletionBlock: (([CKRecordID : CKRecord]?, NSError?) -> Void)?
}

Declaration
From
var desiredKeys: [AnyObject]!
To
var desiredKeys: [String]?

Declaration
From
class func fetchCurrentUserRecordOperation() -> Self!
To
class func fetchCurrentUserRecordOperation() -> Self

Declaration
From
var fetchRecordsCompletionBlock: (([NSObject : AnyObject]!, NSError!) -> Void)!
To
var fetchRecordsCompletionBlock: (([CKRecordID : CKRecord]?, NSError?) -> Void)?

Declaration
From
init!()
To
init()

Declaration
From
convenience init!(recordIDs recordIDs: [AnyObject]!)
To
convenience init(recordIDs recordIDs: [CKRecordID])

Declaration
From
var perRecordCompletionBlock: ((CKRecord!, CKRecordID!, NSError!) -> Void)!
To
var perRecordCompletionBlock: ((CKRecord?, CKRecordID?, NSError?) -> Void)?

Declaration
From
var perRecordProgressBlock: ((CKRecordID!, Double) -> Void)!
To
var perRecordProgressBlock: ((CKRecordID, Double) -> Void)?

Declaration
From
var recordIDs: [AnyObject]!
To
var recordIDs: [CKRecordID]?

Declaration
From
class CKFetchRecordZonesOperation : CKDatabaseOperation {
    class func fetchAllRecordZonesOperation() -> Self!
    init!()
    convenience init!(recordZoneIDs zoneIDs: [AnyObject]!)
    var recordZoneIDs: [AnyObject]!
    var fetchRecordZonesCompletionBlock: (([NSObject : AnyObject]!, NSError!) -> Void)!
}
To
class CKFetchRecordZonesOperation : CKDatabaseOperation {
    class func fetchAllRecordZonesOperation() -> Self
    init()
    convenience init(recordZoneIDs zoneIDs: [CKRecordZoneID])
    var recordZoneIDs: [CKRecordZoneID]?
    var fetchRecordZonesCompletionBlock: (([CKRecordZoneID : CKRecordZone]?, NSError?) -> Void)?
}

Declaration
From
class func fetchAllRecordZonesOperation() -> Self!
To
class func fetchAllRecordZonesOperation() -> Self

Declaration
From
var fetchRecordZonesCompletionBlock: (([NSObject : AnyObject]!, NSError!) -> Void)!
To
var fetchRecordZonesCompletionBlock: (([CKRecordZoneID : CKRecordZone]?, NSError?) -> Void)?

Declaration
From
init!()
To
init()

Declaration
From
convenience init!(recordZoneIDs zoneIDs: [AnyObject]!)
To
convenience init(recordZoneIDs zoneIDs: [CKRecordZoneID])

Declaration
From
var recordZoneIDs: [AnyObject]!
To
var recordZoneIDs: [CKRecordZoneID]?

Declaration
From
class CKFetchSubscriptionsOperation : CKDatabaseOperation {
    init!()
    class func fetchAllSubscriptionsOperation() -> Self!
    convenience init!(subscriptionIDs subscriptionIDs: [AnyObject]!)
    var subscriptionIDs: [AnyObject]!
    var fetchSubscriptionCompletionBlock: (([NSObject : AnyObject]!, NSError!) -> Void)!
}
To
class CKFetchSubscriptionsOperation : CKDatabaseOperation {
    init()
    class func fetchAllSubscriptionsOperation() -> Self
    convenience init(subscriptionIDs subscriptionIDs: [String])
    var subscriptionIDs: [String]?
    var fetchSubscriptionCompletionBlock: (([String : CKSubscription]?, NSError?) -> Void)?
}

Declaration
From
class func fetchAllSubscriptionsOperation() -> Self!
To
class func fetchAllSubscriptionsOperation() -> Self

Declaration
From
var fetchSubscriptionCompletionBlock: (([NSObject : AnyObject]!, NSError!) -> Void)!
To
var fetchSubscriptionCompletionBlock: (([String : CKSubscription]?, NSError?) -> Void)?

Declaration
From
init!()
To
init()

Declaration
From
convenience init!(subscriptionIDs subscriptionIDs: [AnyObject]!)
To
convenience init(subscriptionIDs subscriptionIDs: [String])

Declaration
From
var subscriptionIDs: [AnyObject]!
To
var subscriptionIDs: [String]?

Declaration
From
class CKLocationSortDescriptor : NSSortDescriptor, NSSecureCoding, NSCoding {
    convenience init!()
    init!(key key: String!, relativeLocation relativeLocation: CLLocation!)
    init!(coder aDecoder: NSCoder!)
    @NSCopying var relativeLocation: CLLocation! { get }
}
To
class CKLocationSortDescriptor : NSSortDescriptor {
    convenience init()
    init(key key: String, relativeLocation relativeLocation: CLLocation)
    init(coder aDecoder: NSCoder)
    @NSCopying var relativeLocation: CLLocation { get }
}

Declaration
From
init!(coder aDecoder: NSCoder!)
To
init(coder aDecoder: NSCoder)

Declaration
From
init!(key key: String!, relativeLocation relativeLocation: CLLocation!)
To
init(key key: String, relativeLocation relativeLocation: CLLocation)

Declaration
From
@NSCopying var relativeLocation: CLLocation! { get }
To
@NSCopying var relativeLocation: CLLocation { get }

Declaration
From
class CKMarkNotificationsReadOperation : CKOperation {
    convenience init!()
    init!(notificationIDsToMarkRead notificationIDs: [AnyObject]!)
    var notificationIDs: [AnyObject]!
    var markNotificationsReadCompletionBlock: (([AnyObject]!, NSError!) -> Void)!
}
To
class CKMarkNotificationsReadOperation : CKOperation {
    convenience init()
    init(notificationIDsToMarkRead notificationIDs: [CKNotificationID])
    var notificationIDs: [CKNotificationID]
    var markNotificationsReadCompletionBlock: (([CKNotificationID]?, NSError?) -> Void)?
}

Declaration
From
init!(notificationIDsToMarkRead notificationIDs: [AnyObject]!)
To
init(notificationIDsToMarkRead notificationIDs: [CKNotificationID])

Declaration
From
var markNotificationsReadCompletionBlock: (([AnyObject]!, NSError!) -> Void)!
To
var markNotificationsReadCompletionBlock: (([CKNotificationID]?, NSError?) -> Void)?

Declaration
From
var notificationIDs: [AnyObject]!
To
var notificationIDs: [CKNotificationID]

Declaration
From
class CKModifyBadgeOperation : CKOperation {
    init!()
    convenience init!(badgeValue badgeValue: Int)
    var badgeValue: Int
    var modifyBadgeCompletionBlock: ((NSError!) -> Void)!
}
To
class CKModifyBadgeOperation : CKOperation {
    init()
    convenience init(badgeValue badgeValue: Int)
    var badgeValue: Int
    var modifyBadgeCompletionBlock: ((NSError?) -> Void)?
}

Declaration
From
init!()
To
init()

Declaration
From
convenience init!(badgeValue badgeValue: Int)
To
convenience init(badgeValue badgeValue: Int)

Declaration
From
var modifyBadgeCompletionBlock: ((NSError!) -> Void)!
To
var modifyBadgeCompletionBlock: ((NSError?) -> Void)?

Declaration
From
class CKModifyRecordsOperation : CKDatabaseOperation {
    init!()
    convenience init!(recordsToSave records: [AnyObject]!, recordIDsToDelete recordIDs: [AnyObject]!)
    var recordsToSave: [AnyObject]!
    var recordIDsToDelete: [AnyObject]!
    var savePolicy: CKRecordSavePolicy
    @NSCopying var clientChangeTokenData: NSData!
    var atomic: Bool
    var perRecordProgressBlock: ((CKRecord!, Double) -> Void)!
    var perRecordCompletionBlock: ((CKRecord!, NSError!) -> Void)!
    var modifyRecordsCompletionBlock: (([AnyObject]!, [AnyObject]!, NSError!) -> Void)!
}
To
class CKModifyRecordsOperation : CKDatabaseOperation {
    init()
    convenience init(recordsToSave records: [CKRecord]?, recordIDsToDelete recordIDs: [CKRecordID]?)
    var recordsToSave: [CKRecord]?
    var recordIDsToDelete: [CKRecordID]?
    var savePolicy: CKRecordSavePolicy
    @NSCopying var clientChangeTokenData: NSData?
    var atomic: Bool
    var perRecordProgressBlock: ((CKRecord, Double) -> Void)?
    var perRecordCompletionBlock: ((CKRecord?, NSError?) -> Void)?
    var modifyRecordsCompletionBlock: (([CKRecord]?, [CKRecordID]?, NSError?) -> Void)?
}

Declaration
From
@NSCopying var clientChangeTokenData: NSData!
To
@NSCopying var clientChangeTokenData: NSData?

Declaration
From
init!()
To
init()

Declaration
From
convenience init!(recordsToSave records: [AnyObject]!, recordIDsToDelete recordIDs: [AnyObject]!)
To
convenience init(recordsToSave records: [CKRecord]?, recordIDsToDelete recordIDs: [CKRecordID]?)

Declaration
From
var modifyRecordsCompletionBlock: (([AnyObject]!, [AnyObject]!, NSError!) -> Void)!
To
var modifyRecordsCompletionBlock: (([CKRecord]?, [CKRecordID]?, NSError?) -> Void)?

Declaration
From
var perRecordCompletionBlock: ((CKRecord!, NSError!) -> Void)!
To
var perRecordCompletionBlock: ((CKRecord?, NSError?) -> Void)?

Declaration
From
var perRecordProgressBlock: ((CKRecord!, Double) -> Void)!
To
var perRecordProgressBlock: ((CKRecord, Double) -> Void)?

Declaration
From
var recordIDsToDelete: [AnyObject]!
To
var recordIDsToDelete: [CKRecordID]?

Declaration
From
var recordsToSave: [AnyObject]!
To
var recordsToSave: [CKRecord]?

Declaration
From
class CKModifyRecordZonesOperation : CKDatabaseOperation {
    init!()
    convenience init!(recordZonesToSave recordZonesToSave: [AnyObject]!, recordZoneIDsToDelete recordZoneIDsToDelete: [AnyObject]!)
    var recordZonesToSave: [AnyObject]!
    var recordZoneIDsToDelete: [AnyObject]!
    var modifyRecordZonesCompletionBlock: (([AnyObject]!, [AnyObject]!, NSError!) -> Void)!
}
To
class CKModifyRecordZonesOperation : CKDatabaseOperation {
    init()
    convenience init(recordZonesToSave recordZonesToSave: [CKRecordZone]?, recordZoneIDsToDelete recordZoneIDsToDelete: [CKRecordZoneID]?)
    var recordZonesToSave: [CKRecordZone]?
    var recordZoneIDsToDelete: [CKRecordZoneID]?
    var modifyRecordZonesCompletionBlock: (([CKRecordZone]?, [CKRecordZoneID]?, NSError?) -> Void)?
}

Declaration
From
init!()
To
init()

Declaration
From
convenience init!(recordZonesToSave recordZonesToSave: [AnyObject]!, recordZoneIDsToDelete recordZoneIDsToDelete: [AnyObject]!)
To
convenience init(recordZonesToSave recordZonesToSave: [CKRecordZone]?, recordZoneIDsToDelete recordZoneIDsToDelete: [CKRecordZoneID]?)

Declaration
From
var modifyRecordZonesCompletionBlock: (([AnyObject]!, [AnyObject]!, NSError!) -> Void)!
To
var modifyRecordZonesCompletionBlock: (([CKRecordZone]?, [CKRecordZoneID]?, NSError?) -> Void)?

Declaration
From
var recordZoneIDsToDelete: [AnyObject]!
To
var recordZoneIDsToDelete: [CKRecordZoneID]?

Declaration
From
var recordZonesToSave: [AnyObject]!
To
var recordZonesToSave: [CKRecordZone]?

Declaration
From
class CKModifySubscriptionsOperation : CKDatabaseOperation {
    init!(subscriptionsToSave subscriptionsToSave: [AnyObject]!, subscriptionIDsToDelete subscriptionIDsToDelete: [AnyObject]!)
    var subscriptionsToSave: [AnyObject]!
    var subscriptionIDsToDelete: [AnyObject]!
    var modifySubscriptionsCompletionBlock: (([AnyObject]!, [AnyObject]!, NSError!) -> Void)!
}
To
class CKModifySubscriptionsOperation : CKDatabaseOperation {
    init(subscriptionsToSave subscriptionsToSave: [CKSubscription]?, subscriptionIDsToDelete subscriptionIDsToDelete: [String]?)
    var subscriptionsToSave: [CKSubscription]?
    var subscriptionIDsToDelete: [String]?
    var modifySubscriptionsCompletionBlock: (([CKSubscription]?, [String]?, NSError?) -> Void)?
}

Declaration
From
init!(subscriptionsToSave subscriptionsToSave: [AnyObject]!, subscriptionIDsToDelete subscriptionIDsToDelete: [AnyObject]!)
To
init(subscriptionsToSave subscriptionsToSave: [CKSubscription]?, subscriptionIDsToDelete subscriptionIDsToDelete: [String]?)

Declaration
From
var modifySubscriptionsCompletionBlock: (([AnyObject]!, [AnyObject]!, NSError!) -> Void)!
To
var modifySubscriptionsCompletionBlock: (([CKSubscription]?, [String]?, NSError?) -> Void)?

Declaration
From
var subscriptionIDsToDelete: [AnyObject]!
To
var subscriptionIDsToDelete: [String]?

Declaration
From
var subscriptionsToSave: [AnyObject]!
To
var subscriptionsToSave: [CKSubscription]?

Declaration
From
class CKNotification : NSObject {
    init!()
    convenience init!(fromRemoteNotificationDictionary notificationDictionary: [NSObject : AnyObject]!)
    class func notificationFromRemoteNotificationDictionary(_ notificationDictionary: [NSObject : AnyObject]!) -> Self!
    var notificationType: CKNotificationType { get }
    @NSCopying var notificationID: CKNotificationID! { get }
    var containerIdentifier: String! { get }
    var isPruned: Bool { get }
    var alertBody: String! { get }
    var alertLocalizationKey: String! { get }
    var alertLocalizationArgs: [AnyObject]! { get }
    var alertActionLocalizationKey: String! { get }
    var alertLaunchImage: String! { get }
    @NSCopying var badge: NSNumber! { get }
    var soundName: String! { get }
}
To
class CKNotification : NSObject {
    init()
    convenience init(fromRemoteNotificationDictionary notificationDictionary: [String : NSObject])
    class func notificationFromRemoteNotificationDictionary(_ notificationDictionary: [String : NSObject]) -> Self
    var notificationType: CKNotificationType { get }
    @NSCopying var notificationID: CKNotificationID? { get }
    var containerIdentifier: String? { get }
    var isPruned: Bool { get }
    var alertBody: String? { get }
    var alertLocalizationKey: String? { get }
    var alertLocalizationArgs: [String]? { get }
    var alertActionLocalizationKey: String? { get }
    var alertLaunchImage: String? { get }
    @NSCopying var badge: NSNumber? { get }
    var soundName: String? { get }
    var subscriptionID: String? { get }
    var category: String? { get }
}

Declaration
From
var alertActionLocalizationKey: String! { get }
To
var alertActionLocalizationKey: String? { get }

Declaration
From
var alertBody: String! { get }
To
var alertBody: String? { get }

Declaration
From
var alertLaunchImage: String! { get }
To
var alertLaunchImage: String? { get }

Declaration
From
var alertLocalizationArgs: [AnyObject]! { get }
To
var alertLocalizationArgs: [String]? { get }

Declaration
From
var alertLocalizationKey: String! { get }
To
var alertLocalizationKey: String? { get }

Declaration
From
@NSCopying var badge: NSNumber! { get }
To
@NSCopying var badge: NSNumber? { get }

Declaration
From
var containerIdentifier: String! { get }
To
var containerIdentifier: String? { get }

Declaration
From
convenience init!(fromRemoteNotificationDictionary notificationDictionary: [NSObject : AnyObject]!)
To
convenience init(fromRemoteNotificationDictionary notificationDictionary: [String : NSObject])

Declaration
From
@NSCopying var notificationID: CKNotificationID! { get }
To
@NSCopying var notificationID: CKNotificationID? { get }

Declaration
From
var soundName: String! { get }
To
var soundName: String? { get }

Declaration
From
class CKNotificationInfo : NSObject, NSSecureCoding, NSCoding, NSCopying {
    var alertBody: String!
    var alertLocalizationKey: String!
    var alertLocalizationArgs: [AnyObject]!
    var alertActionLocalizationKey: String!
    var alertLaunchImage: String!
    var soundName: String!
    var desiredKeys: [AnyObject]!
    var shouldBadge: Bool
    var shouldSendContentAvailable: Bool
}
To
class CKNotificationInfo : NSObject, NSSecureCoding, NSCoding, NSCopying {
    var alertBody: String?
    var alertLocalizationKey: String?
    var alertLocalizationArgs: [String]?
    var alertActionLocalizationKey: String?
    var alertLaunchImage: String?
    var soundName: String?
    var desiredKeys: [String]?
    var shouldBadge: Bool
    var shouldSendContentAvailable: Bool
    var category: String?
}

Declaration
From
var alertActionLocalizationKey: String!
To
var alertActionLocalizationKey: String?

Declaration
From
var alertBody: String!
To
var alertBody: String?

Declaration
From
var alertLaunchImage: String!
To
var alertLaunchImage: String?

Declaration
From
var alertLocalizationArgs: [AnyObject]!
To
var alertLocalizationArgs: [String]?

Declaration
From
var alertLocalizationKey: String!
To
var alertLocalizationKey: String?

Declaration
From
var desiredKeys: [AnyObject]!
To
var desiredKeys: [String]?

Declaration
From
var soundName: String!
To
var soundName: String?

Raw Value Type
From--
ToInt

Modified CKOperation
Declaration
From
class CKOperation : NSOperation {
    init!()
    var container: CKContainer!
    var usesBackgroundSession: Bool
    var allowsCellularAccess: Bool
}
To
class CKOperation : NSOperation {
    init()
    func activityStart() -> os_activity_t
    var container: CKContainer?
    var usesBackgroundSession: Bool
    var allowsCellularAccess: Bool
}

Declaration
From
var container: CKContainer!
To
var container: CKContainer?

Declaration
From
init!()
To
init()

Modified CKOperation.usesBackgroundSession
Deprecation
From--
ToiOS 9.0

Modified CKQuery
Declaration
From
class CKQuery : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init!()
    init!(coder aDecoder: NSCoder!)
    init!(recordType recordType: String!, predicate predicate: NSPredicate!)
    var recordType: String! { get }
    @NSCopying var predicate: NSPredicate! { get }
    var sortDescriptors: [AnyObject]!
}
To
class CKQuery : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init()
    init(coder aDecoder: NSCoder)
    init(recordType recordType: String, predicate predicate: NSPredicate)
    var recordType: String { get }
    @NSCopying var predicate: NSPredicate { get }
    var sortDescriptors: [NSSortDescriptor]?
}

Declaration
From
init!(coder aDecoder: NSCoder!)
To
init(coder aDecoder: NSCoder)

Declaration
From
init!(recordType recordType: String!, predicate predicate: NSPredicate!)
To
init(recordType recordType: String, predicate predicate: NSPredicate)

Declaration
From
@NSCopying var predicate: NSPredicate! { get }
To
@NSCopying var predicate: NSPredicate { get }

Declaration
From
var recordType: String! { get }
To
var recordType: String { get }

Declaration
From
var sortDescriptors: [AnyObject]!
To
var sortDescriptors: [NSSortDescriptor]?

Modified CKQueryCursor
Declaration
From
class CKQueryCursor : NSObject, NSCopying, NSSecureCoding, NSCoding {
    init!()
}
To
class CKQueryCursor : NSObject, NSCopying, NSSecureCoding, NSCoding {
    init()
}

Declaration
From
class CKQueryNotification : CKNotification {
    var queryNotificationReason: CKQueryNotificationReason { get }
    var recordFields: [NSObject : AnyObject]! { get }
    @NSCopying var recordID: CKRecordID! { get }
    var isPublicDatabase: Bool { get }
}
To
class CKQueryNotification : CKNotification {
    var queryNotificationReason: CKQueryNotificationReason { get }
    var recordFields: [String : CKRecordValue]? { get }
    @NSCopying var recordID: CKRecordID? { get }
    var isPublicDatabase: Bool { get }
}

Declaration
From
var recordFields: [NSObject : AnyObject]! { get }
To
var recordFields: [String : CKRecordValue]? { get }

Declaration
From
@NSCopying var recordID: CKRecordID! { get }
To
@NSCopying var recordID: CKRecordID? { get }

Raw Value Type
From--
ToInt

Declaration
From
class CKQueryOperation : CKDatabaseOperation {
    init!()
    convenience init!(query query: CKQuery!)
    convenience init!(cursor cursor: CKQueryCursor!)
    @NSCopying var query: CKQuery!
    @NSCopying var cursor: CKQueryCursor!
    @NSCopying var zoneID: CKRecordZoneID!
    var resultsLimit: Int
    var desiredKeys: [AnyObject]!
    var recordFetchedBlock: ((CKRecord!) -> Void)!
    var queryCompletionBlock: ((CKQueryCursor!, NSError!) -> Void)!
}
To
class CKQueryOperation : CKDatabaseOperation {
    init()
    convenience init(query query: CKQuery)
    convenience init(cursor cursor: CKQueryCursor)
    @NSCopying var query: CKQuery?
    @NSCopying var cursor: CKQueryCursor?
    @NSCopying var zoneID: CKRecordZoneID?
    var resultsLimit: Int
    var desiredKeys: [String]?
    var recordFetchedBlock: ((CKRecord) -> Void)?
    var queryCompletionBlock: ((CKQueryCursor?, NSError?) -> Void)?
}

Declaration
From
@NSCopying var cursor: CKQueryCursor!
To
@NSCopying var cursor: CKQueryCursor?

Declaration
From
var desiredKeys: [AnyObject]!
To
var desiredKeys: [String]?

Declaration
From
init!()
To
init()

Declaration
From
convenience init!(cursor cursor: CKQueryCursor!)
To
convenience init(cursor cursor: CKQueryCursor)

Declaration
From
convenience init!(query query: CKQuery!)
To
convenience init(query query: CKQuery)

Declaration
From
@NSCopying var query: CKQuery!
To
@NSCopying var query: CKQuery?

Declaration
From
var queryCompletionBlock: ((CKQueryCursor!, NSError!) -> Void)!
To
var queryCompletionBlock: ((CKQueryCursor?, NSError?) -> Void)?

Declaration
From
var recordFetchedBlock: ((CKRecord!) -> Void)!
To
var recordFetchedBlock: ((CKRecord) -> Void)?

Declaration
From
@NSCopying var zoneID: CKRecordZoneID!
To
@NSCopying var zoneID: CKRecordZoneID?

Modified CKRecord
Declaration
From
class CKRecord : NSObject, NSSecureCoding, NSCoding, NSCopying {
    init!()
    init!(recordType recordType: String!)
    init!(recordType recordType: String!, recordID recordID: CKRecordID!)
    init!(recordType recordType: String!, zoneID zoneID: CKRecordZoneID!)
    var recordType: String! { get }
    @NSCopying var recordID: CKRecordID! { get }
    var recordChangeTag: String! { get }
    @NSCopying var creatorUserRecordID: CKRecordID! { get }
    @NSCopying var creationDate: NSDate! { get }
    @NSCopying var lastModifiedUserRecordID: CKRecordID! { get }
    @NSCopying var modificationDate: NSDate! { get }
    func objectForKey(_ key: String!) -> AnyObject!
    func setObject(_ object: CKRecordValue!, forKey key: String!)
    func allKeys() -> [AnyObject]!
    func allTokens() -> [AnyObject]!
    func objectForKeyedSubscript(_ key: String!) -> AnyObject!
    func setObject(_ object: CKRecordValue!, forKeyedSubscript key: String!)
    func changedKeys() -> [AnyObject]!
    func encodeSystemFieldsWithCoder(_ coder: NSCoder!)
}
To
class CKRecord : NSObject, NSSecureCoding, NSCoding, NSCopying {
    init()
    init(recordType recordType: String)
    init(recordType recordType: String, recordID recordID: CKRecordID)
    init(recordType recordType: String, zoneID zoneID: CKRecordZoneID)
    var recordType: String { get }
    @NSCopying var recordID: CKRecordID { get }
    var recordChangeTag: String? { get }
    @NSCopying var creatorUserRecordID: CKRecordID? { get }
    @NSCopying var creationDate: NSDate? { get }
    @NSCopying var lastModifiedUserRecordID: CKRecordID? { get }
    @NSCopying var modificationDate: NSDate? { get }
    func objectForKey(_ key: String) -> CKRecordValue?
    func setObject(_ object: CKRecordValue?, forKey key: String)
    func allKeys() -> [String]
    func allTokens() -> [String]
    subscript (_ key: String) -> CKRecordValue?
    func objectForKeyedSubscript(_ key: String) -> CKRecordValue?
    func setObject(_ object: CKRecordValue?, forKeyedSubscript key: String)
    func changedKeys() -> [String]
    func encodeSystemFieldsWithCoder(_ coder: NSCoder)
}

Declaration
From
func allKeys() -> [AnyObject]!
To
func allKeys() -> [String]

Declaration
From
func allTokens() -> [AnyObject]!
To
func allTokens() -> [String]

Declaration
From
func changedKeys() -> [AnyObject]!
To
func changedKeys() -> [String]

Declaration
From
@NSCopying var creationDate: NSDate! { get }
To
@NSCopying var creationDate: NSDate? { get }

Declaration
From
@NSCopying var creatorUserRecordID: CKRecordID! { get }
To
@NSCopying var creatorUserRecordID: CKRecordID? { get }

Declaration
From
func encodeSystemFieldsWithCoder(_ coder: NSCoder!)
To
func encodeSystemFieldsWithCoder(_ coder: NSCoder)

Declaration
From
init!(recordType recordType: String!)
To
init(recordType recordType: String)

Declaration
From
init!(recordType recordType: String!, recordID recordID: CKRecordID!)
To
init(recordType recordType: String, recordID recordID: CKRecordID)

Declaration
From
init!(recordType recordType: String!, zoneID zoneID: CKRecordZoneID!)
To
init(recordType recordType: String, zoneID zoneID: CKRecordZoneID)

Declaration
From
@NSCopying var lastModifiedUserRecordID: CKRecordID! { get }
To
@NSCopying var lastModifiedUserRecordID: CKRecordID? { get }

Declaration
From
@NSCopying var modificationDate: NSDate! { get }
To
@NSCopying var modificationDate: NSDate? { get }

Declaration
From
func objectForKey(_ key: String!) -> AnyObject!
To
func objectForKey(_ key: String) -> CKRecordValue?

Declaration
From
var recordChangeTag: String! { get }
To
var recordChangeTag: String? { get }

Declaration
From
@NSCopying var recordID: CKRecordID! { get }
To
@NSCopying var recordID: CKRecordID { get }

Declaration
From
var recordType: String! { get }
To
var recordType: String { get }

Declaration
From
func setObject(_ object: CKRecordValue!, forKey key: String!)
To
func setObject(_ object: CKRecordValue?, forKey key: String)

NameDeclarationIntroduction
FromobjectForKeyedSubscript(_:)
func objectForKeyedSubscript(_ key: String!) -> AnyObject!
iOS 8.0
Tosubscript(_:)
subscript (_ key: String) -> CKRecordValue?
iOS 9.0

Modified CKRecordID
Declaration
From
class CKRecordID : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init!()
    convenience init!(recordName recordName: String!)
    init!(recordName recordName: String!, zoneID zoneID: CKRecordZoneID!)
    var recordName: String! { get }
    var zoneID: CKRecordZoneID! { get }
}
To
class CKRecordID : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init()
    convenience init(recordName recordName: String)
    init(recordName recordName: String, zoneID zoneID: CKRecordZoneID)
    var recordName: String { get }
    var zoneID: CKRecordZoneID { get }
}

Declaration
From
convenience init!(recordName recordName: String!)
To
convenience init(recordName recordName: String)

Declaration
From
init!(recordName recordName: String!, zoneID zoneID: CKRecordZoneID!)
To
init(recordName recordName: String, zoneID zoneID: CKRecordZoneID)

Declaration
From
var recordName: String! { get }
To
var recordName: String { get }

Declaration
From
var zoneID: CKRecordZoneID! { get }
To
var zoneID: CKRecordZoneID { get }

Raw Value Type
From--
ToInt

Modified CKRecordZone
Declaration
From
class CKRecordZone : NSObject, NSSecureCoding, NSCoding, NSCopying {
    class func defaultRecordZone() -> CKRecordZone!
    init!()
    init!(zoneName zoneName: String!)
    init!(zoneID zoneID: CKRecordZoneID!)
    var zoneID: CKRecordZoneID! { get }
    var capabilities: CKRecordZoneCapabilities { get }
}
To
class CKRecordZone : NSObject, NSSecureCoding, NSCoding, NSCopying {
    class func defaultRecordZone() -> CKRecordZone
    init()
    init(zoneName zoneName: String)
    init(zoneID zoneID: CKRecordZoneID)
    var zoneID: CKRecordZoneID { get }
    var capabilities: CKRecordZoneCapabilities { get }
}

Declaration
From
class func defaultRecordZone() -> CKRecordZone!
To
class func defaultRecordZone() -> CKRecordZone

Declaration
From
init!(zoneID zoneID: CKRecordZoneID!)
To
init(zoneID zoneID: CKRecordZoneID)

Declaration
From
init!(zoneName zoneName: String!)
To
init(zoneName zoneName: String)

Declaration
From
var zoneID: CKRecordZoneID! { get }
To
var zoneID: CKRecordZoneID { get }

DeclarationProtocols
From
struct CKRecordZoneCapabilities : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue rawValue: UInt)
    static var FetchChanges: CKRecordZoneCapabilities { get }
    static var Atomic: CKRecordZoneCapabilities { get }
}
RawOptionSetType
To
struct CKRecordZoneCapabilities : OptionSetType {
    init(rawValue rawValue: UInt)
    static var FetchChanges: CKRecordZoneCapabilities { get }
    static var Atomic: CKRecordZoneCapabilities { get }
}
OptionSetType

Declaration
From
class CKRecordZoneID : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init!()
    init!(zoneName zoneName: String!, ownerName ownerName: String!)
    var zoneName: String! { get }
    var ownerName: String! { get }
}
To
class CKRecordZoneID : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init()
    init(zoneName zoneName: String, ownerName ownerName: String)
    var zoneName: String { get }
    var ownerName: String { get }
}

Declaration
From
init!(zoneName zoneName: String!, ownerName ownerName: String!)
To
init(zoneName zoneName: String, ownerName ownerName: String)

Declaration
From
var ownerName: String! { get }
To
var ownerName: String { get }

Declaration
From
var zoneName: String! { get }
To
var zoneName: String { get }

Declaration
From
class CKRecordZoneNotification : CKNotification {
    @NSCopying var recordZoneID: CKRecordZoneID! { get }
}
To
class CKRecordZoneNotification : CKNotification {
    @NSCopying var recordZoneID: CKRecordZoneID? { get }
}

Declaration
From
@NSCopying var recordZoneID: CKRecordZoneID! { get }
To
@NSCopying var recordZoneID: CKRecordZoneID? { get }

Modified CKReference
Declaration
From
class CKReference : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init!()
    init!(recordID recordID: CKRecordID!, action action: CKReferenceAction)
    convenience init!(record record: CKRecord!, action action: CKReferenceAction)
    var referenceAction: CKReferenceAction { get }
    @NSCopying var recordID: CKRecordID! { get }
}
extension CKReference : CKRecordValue, NSObjectProtocol {
}
To
class CKReference : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init()
    init(recordID recordID: CKRecordID, action action: CKReferenceAction)
    convenience init(record record: CKRecord, action action: CKReferenceAction)
    var referenceAction: CKReferenceAction { get }
    @NSCopying var recordID: CKRecordID { get }
}
extension CKReference : CKRecordValue {
}

Declaration
From
convenience init!(record record: CKRecord!, action action: CKReferenceAction)
To
convenience init(record record: CKRecord, action action: CKReferenceAction)

Declaration
From
init!(recordID recordID: CKRecordID!, action action: CKReferenceAction)
To
init(recordID recordID: CKRecordID, action action: CKReferenceAction)

Declaration
From
@NSCopying var recordID: CKRecordID! { get }
To
@NSCopying var recordID: CKRecordID { get }

Raw Value Type
From--
ToUInt

Declaration
From
class CKServerChangeToken : NSObject, NSCopying, NSSecureCoding, NSCoding {
    init!()
}
To
class CKServerChangeToken : NSObject, NSCopying, NSSecureCoding, NSCoding {
    init()
}

Declaration
From
class CKSubscription : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init!()
    init!(coder aDecoder: NSCoder!)
    convenience init!(recordType recordType: String!, predicate predicate: NSPredicate!, options subscriptionOptions: CKSubscriptionOptions)
    init!(recordType recordType: String!, predicate predicate: NSPredicate!, subscriptionID subscriptionID: String!, options subscriptionOptions: CKSubscriptionOptions)
    convenience init!(zoneID zoneID: CKRecordZoneID!, options subscriptionOptions: CKSubscriptionOptions)
    init!(zoneID zoneID: CKRecordZoneID!, subscriptionID subscriptionID: String!, options subscriptionOptions: CKSubscriptionOptions)
    var subscriptionID: String! { get }
    var subscriptionType: CKSubscriptionType { get }
    var recordType: String! { get }
    @NSCopying var predicate: NSPredicate! { get }
    var subscriptionOptions: CKSubscriptionOptions { get }
    @NSCopying var notificationInfo: CKNotificationInfo!
    @NSCopying var zoneID: CKRecordZoneID!
}
To
class CKSubscription : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init()
    init(coder aDecoder: NSCoder)
    convenience init(recordType recordType: String, predicate predicate: NSPredicate, options subscriptionOptions: CKSubscriptionOptions)
    init(recordType recordType: String, predicate predicate: NSPredicate, subscriptionID subscriptionID: String, options subscriptionOptions: CKSubscriptionOptions)
    convenience init(zoneID zoneID: CKRecordZoneID, options subscriptionOptions: CKSubscriptionOptions)
    init(zoneID zoneID: CKRecordZoneID, subscriptionID subscriptionID: String, options subscriptionOptions: CKSubscriptionOptions)
    var subscriptionID: String { get }
    var subscriptionType: CKSubscriptionType { get }
    var recordType: String? { get }
    @NSCopying var predicate: NSPredicate? { get }
    var subscriptionOptions: CKSubscriptionOptions { get }
    @NSCopying var notificationInfo: CKNotificationInfo?
    @NSCopying var zoneID: CKRecordZoneID?
}

Declaration
From
init!(coder aDecoder: NSCoder!)
To
init(coder aDecoder: NSCoder)

Declaration
From
convenience init!(recordType recordType: String!, predicate predicate: NSPredicate!, options subscriptionOptions: CKSubscriptionOptions)
To
convenience init(recordType recordType: String, predicate predicate: NSPredicate, options subscriptionOptions: CKSubscriptionOptions)

Declaration
From
init!(recordType recordType: String!, predicate predicate: NSPredicate!, subscriptionID subscriptionID: String!, options subscriptionOptions: CKSubscriptionOptions)
To
init(recordType recordType: String, predicate predicate: NSPredicate, subscriptionID subscriptionID: String, options subscriptionOptions: CKSubscriptionOptions)

Declaration
From
convenience init!(zoneID zoneID: CKRecordZoneID!, options subscriptionOptions: CKSubscriptionOptions)
To
convenience init(zoneID zoneID: CKRecordZoneID, options subscriptionOptions: CKSubscriptionOptions)

Declaration
From
init!(zoneID zoneID: CKRecordZoneID!, subscriptionID subscriptionID: String!, options subscriptionOptions: CKSubscriptionOptions)
To
init(zoneID zoneID: CKRecordZoneID, subscriptionID subscriptionID: String, options subscriptionOptions: CKSubscriptionOptions)

Declaration
From
@NSCopying var notificationInfo: CKNotificationInfo!
To
@NSCopying var notificationInfo: CKNotificationInfo?

Declaration
From
@NSCopying var predicate: NSPredicate! { get }
To
@NSCopying var predicate: NSPredicate? { get }

Declaration
From
var recordType: String! { get }
To
var recordType: String? { get }

Declaration
From
var subscriptionID: String! { get }
To
var subscriptionID: String { get }

Declaration
From
@NSCopying var zoneID: CKRecordZoneID!
To
@NSCopying var zoneID: CKRecordZoneID?

DeclarationProtocols
From
struct CKSubscriptionOptions : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue rawValue: UInt)
    static var FiresOnRecordCreation: CKSubscriptionOptions { get }
    static var FiresOnRecordUpdate: CKSubscriptionOptions { get }
    static var FiresOnRecordDeletion: CKSubscriptionOptions { get }
    static var FiresOnce: CKSubscriptionOptions { get }
}
RawOptionSetType
To
struct CKSubscriptionOptions : OptionSetType {
    init(rawValue rawValue: UInt)
    static var FiresOnRecordCreation: CKSubscriptionOptions { get }
    static var FiresOnRecordUpdate: CKSubscriptionOptions { get }
    static var FiresOnRecordDeletion: CKSubscriptionOptions { get }
    static var FiresOnce: CKSubscriptionOptions { get }
}
OptionSetType

Raw Value Type
From--
ToInt

Declaration
From
typealias CKApplicationPermissionBlock = (CKApplicationPermissionStatus, NSError!) -> Void
To
typealias CKApplicationPermissionBlock = (CKApplicationPermissionStatus, NSError?) -> Void