將資料儲存到 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 ?? "")
})