NetNewsWire/Frameworks/Account/CloudKit/WebFeed+CloudKit.swift
2020-03-22 16:35:03 -05:00

54 lines
1.0 KiB
Swift

//
// WebFeed+CloudKit.swift
// Account
//
// Created by Maurice Parker on 3/21/20.
// Copyright © 2020 Ranchero Software, LLC. All rights reserved.
//
import Foundation
import CloudKit
extension WebFeed: CloudKitRecordConvertible {
enum CloudKitKey: String {
case url
case homePageURL
case editedName
}
static var cloudKitZoneID: CKRecordZone.ID {
return CloudKitAccountZone.zoneID
}
var cloudKitPrimaryKey: String {
return externalID!
}
var cloudKitRecord: CKRecord {
let record = CKRecord(recordType: Self.cloudKitRecordType)
record[.url] = url
record[.homePageURL] = homePageURL
record[.editedName] = editedName
return record
}
func assignCloudKitPrimaryKeyIfNecessary() {
if externalID == nil {
externalID = UUID().uuidString
}
}
}
extension CKRecord {
subscript(key: WebFeed.CloudKitKey) -> Any? {
get {
return self[key.rawValue]
}
set {
self[key.rawValue] = newValue as? CKRecordValue
}
}
}