将数据保存到 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 ?? "")
})