iOS8のリリース時にCloudKitを使ったアプリをリリースしたいので、CloudKitをテストしています。以下のコードを使用してデータを保存するのは簡単なようです。
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!");
}
}];
これでエラーは発生しません。ただし、コードを再度実行しようとすると、レコードの値を次のように変更した可能性があります。
[record setValue:@"newValue" forKey:@"defaultKey"];
変更されたデータを保存するにはどうすればよいですかという質問をするエラーが表示されます。結局のところ、これはクラウドへの保存の基本的な部分です。エラーは以下のとおりです。ご不明な点がございましたら、お気軽にお問い合わせください。
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">