我一直在测试CloudKit,因为我希望在发布iOS8时使用它来发布应用程序.使用以下代码保存数据似乎很简单:
CKRecordID * recordID = [[CKRecordID alloc] initWithRecordName:@"basicRecord"];
CKRecord * record = [[CKRecord alloc] initWithRecordType:@"basicRecordType" recordID:recordID];
[record setValue:@"defaultValue" forKey:@"defaultKey"];
CKDatabase *database = [[CKContainer defaultContainer] publicCloudDatabase];
[database saveRecord:record completionHandler:^(CKRecord *record, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"Record Saved!");
}
}];
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误.但是,如果我再次尝试运行代码,可能是因为我已将记录值更改为
[record setValue:@"newValue" forKey:@"defaultKey"];
Run Code Online (Sandbox Code Playgroud)
我收到一个错误提出问题,如何保存修改过的数据.毕竟,这是将事物保存到云端的基本部分.错误如下,任何帮助将不胜感激,不要犹豫,要求进一步的信息.
Error: <CKError 0x17024afb0: "Server Record Changed" (14/2017); "Error saving record <CKRecordID: 0x144684a80; basicRecord:(_defaultZone:__defaultOwner__)> to server: (null)"; uuid = 182C497F-966C-418A-9E6A-5563BA6CC6CD; container ID = "iCloud.com.yourcompany.CloudKit">
Run Code Online (Sandbox Code Playgroud) 我创建了一个dataModel,我有一个任务.此任务有几个变量,但也有一个与事件的一对多链接.这些事件可能是添加图片或评论等内容,因此一项任务可能会有很多事件.我把它们联系起来,如下所示:

实体文件也设置为:
import CoreData
class Task: NSManagedObject {
@NSManaged var area : Area
@NSManaged var pictures : [TaskPicture]
@NSManaged var events : [Event]
@NSManaged var requestedByDept : NSString?
@NSManaged var requestedByUser : NSString?
@NSManaged var workloadDept : NSString?
@NSManaged var detailDescription : NSString?
@NSManaged var status : NSString
@NSManaged var uniqueId : NSString?
@NSManaged var isActive : NSNumber
@NSManaged var created : NSDate?
@NSManaged var modified : NSDate?
@NSManaged var thumbnail : NSData?
}
Run Code Online (Sandbox Code Playgroud)
和
import CoreData
class Event: NSManagedObject …Run Code Online (Sandbox Code Playgroud)