將資料儲存到 CloudKit

要將日期儲存到 CloudKit,我們必須:

  • 一個 CKRecordID(你唯一記錄的關鍵)
  • 一個 CKRecord(包括資料)

製作記錄金鑰

為確保每個新記錄識別符號都是唯一的,我們使用當前時間戳,這是唯一的。我們使用 NSDate 的方法 timeIntervalSinceReferenceDate() 獲取時間戳。它是###。###(#are numbers)的形式,我們將使用整數部分。為此,我們拆分字串:

迅速

let timestamp = String(format: "%f", NSDate.timeIntervalSinceReferenceDate())
let timestampParts = timestamp.componentsSeparatedByString(".")
let recordID = CKRecordID(recordName: timestampParts[0])

做記錄

要進行記錄,我們應該將記錄型別(在使用 CloudKit 儀表板中解釋)指定為使用者,將 ID 作為我們剛剛製作的內容和資料。在這裡,我們將向記錄中新增示例文字,圖片和當前日期:

迅速

let record = CKRecord(recordType: "Users", recordID: recordID)
record.setObject("Some Text", forKey: "text")
record.setObject(CKAsset(fileURL: someValidImageURL), forKey: "image")
record.setObject(NSDate(), forKey: "date")

Objective-C

CKRecord *record = [[CKRecord alloc] initWithRecordType: "Users" recordID: recordID];
[record setObject: "Some Text" forKey: "text"];
[record setObject: [CKAsset assetWithFileURL: someValidImageURL] forKey: "image"];
[record setObject: [[NSDate alloc] init] forKey: "date"];

注意

在這裡,我們沒有將 UIImage 直接新增到記錄中,因為如備註中所述,CloudKit 不直接支援影象格式,因此我們已將 UIImage 轉換為 CKAsset

訪問容器

迅速

let container = CKContainer.defaultContainer()
let database = container.privateCloudDatabase // or container.publicCloudDatabase

將記錄儲存到 CloudKit 資料庫

迅速

database.saveRecord(record, completionHandler: { (_, error) -> Void in
    print(error ?? "")
})