使用 CloudKit 修改数据

Posted

技术标签:

【中文标题】使用 CloudKit 修改数据【英文标题】:Modify data with CloudKit 【发布时间】:2015-01-14 23:55:45 【问题描述】:

我想在 CloudKit 中修改数据。我发现了这个问题 (Saving Modified Data in CloudKit),它指向 CKModifyRecordsOperation,但对于这个问题,我正在寻找更多指导。我正在这样设置我的对象:

[object setValue:number forKey:@"total"];

如果我只修改一条记录而不是全部,我还调用 CKModifyRecordsOperation 吗? 关于如何完成的任何线索? 我一直在使用[self.cloudManager saveRecord:object];,但修改记录时这不起作用。

【问题讨论】:

【参考方案1】:

您可以获取、修改和保存对单个记录所做的更改。

下面的代码 sn-p 展示了如何获取 Artwork 记录,更改日期属性值,并将其保存到数据库中。

// Fetch the record from the database
CKDatabase *publicDatabase = [[CKContainer containerWithIdentifier:containerIdentifier] publicCloudDatabase];
CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:@"115"];
[publicDatabase fetchRecordWithID:artworkRecordID completionHandler:^(CKRecord *artworkRecord, NSError *error) 
   if (error) 
      // Error handling for failed fetch from public database
   
   else 
      // Modify the record and save it to the database
      NSDate *date = artworkRecord[@"date"];
      artworkRecord[@"date"]; = [date dateByAddingTimeInterval:30.0 * 60.0];
      [publicDatabase saveRecord:artworkRecord completionHandler:^(CKRecord *savedRecord, NSError *saveError) 
         // Error handling for failed save to public database
      ];
   
];

考虑阅读this article了解更多详细信息。

【讨论】:

您提到这适用于个人记录。我试图允许其他人修改其他人创建的数据,但获得“不允许写入权限......”。是否有专门的修改代码,或者是我在仪表板中调整的? 您可以为每条记录在仪表盘上设置权限。如果只有创作者可以修改或任何人等等。

以上是关于使用 CloudKit 修改数据的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit 修改现有的 CKSubscription

Cloudkit 公共数据库错误:“不允许写入操作”

CloudKit,无法修改某些记录 - 未找到区域

CloudKit修改了用户过滤的记录?

CloudKit - 当用户在离线时添加、修改或删除对象时该怎么办?

如何修改 CloudKit 参考列表