Cloudkit:“错误保存记录写入操作不允许”
Posted
技术标签:
【中文标题】Cloudkit:“错误保存记录写入操作不允许”【英文标题】:Cloudkit: " error saving record WRITE operation not permitted" 【发布时间】:2015-08-24 22:50:11 【问题描述】:我正在尝试保存记录 CloudKit,但我从 cloudkit 收到以下错误:
error saving record este es error: Error saving record <CKRecordID: 0x7fef15b5d2a0; 2:(_defaultZone:__defaultOwner__)> to server: WRITE operation not permitted
这是我尝试保存记录的方式:
[publicDatabase saveRecord:recordContent completionHandler:^(CKRecord *record, NSError *error)
if (!error)
NSLog(@"saved!!!");
else
if ([[error.userInfo valueForKey:@"ErrorDescription"] isEqualToString:@"record to insert already exists"])
NSLog(@"record already exist %@",[error.userInfo valueForKey:@"ErrorDescription"]);
NSLog(@"error saving record : %@",error.localizedDescription);
];
但在我检查 cloudkit 是否可用之前:
[myContainer accountStatusWithCompletionHandler:^(CKAccountStatus accountStatus, NSError *error)
NSLog(@" no error but status %ld",accountStatus);
if (((accountStatus == 3) || (accountStatus == 2)) && (!error))
NSLog(@" no error but status %ld",accountStatus);
// typedef NS_ENUM(NSInteger, CKAccountStatus)
// /* An error occurred when getting the account status, consult the corresponding NSError */
// CKAccountStatusCouldNotDetermine = 0,
// /* The iCloud account credentials are available for this application */
// CKAccountStatusAvailable = 1,
// /* Parental Controls / Device Management has denied access to iCloud account credentials */
// CKAccountStatusRestricted = 2,
// /* No iCloud account is logged in on this device */
// CKAccountStatusNoAccount = 3,
//
//
if (error)
NSLog(@" accountStatus error %@",error);
];
我的状态为 1,即 CKAccountStatusAvailable。
你们中的任何人都知道为什么会发生这种情况,直到最后一条记录之前它一直运行良好,或者你们中的任何人都知道解决这个问题的方法?
非常感谢您的帮助。
【问题讨论】:
您是保存新记录还是更新现有记录?如果您正在更新,那么该记录是否也是由您创建的(相同的苹果 ID)。如果没有,则转到 iCloud 仪表板并将权限设置为所有用户都可以更新的记录类型。 感谢您指出您需要设置权限以允许删除公共记录。 【参考方案1】:您需要设置权限以允许用户写入(或删除)由其他人创建的记录。您在开发环境中执行此操作,在 Schema、Record Types 下,选择特定记录,然后在右侧有一个标记为 Security 的下拉菜单。授予“已验证”角色读取和写入的权限。然后部署到生产环境。
【讨论】:
这应该被标记为正确答案(尽管如果您仍在开发中,则不需要“部署到生产”)。 现在可以在顶部的“安全角色”选项卡中找到它:)【参考方案2】:这是在最新的 CloudKit 中移动的,我花了一段时间才找到它。
请注意,这不是即时的,这些更改在保存后需要一段时间才能传播。稍后再回来刷新页面以查看它们是否已应用。
如果您在设置这些权限并让它们传播后仍然收到此错误,则可能是您在模拟器中的 iCloud 登录出现问题。 退出 iCloud 并再次登录为我解决了这个问题。
【讨论】:
在“将架构部署到生产”并等待一段时间后,我仍然在生产环境中设置角色时遇到问题 - 所有复选框都是空的,并且看起来字段被禁用。我做错了什么?【参考方案3】:我花了 2 天时间处理“权限失败 (10/2007)”。所有权限和安全角色都设置为 William.T 图片。重新登录 iCloud 没有任何结果。 障碍出现在一个小环境中(Apple 没有记录) - 它是位于的切换器“iCloud Drive” 设置/[您的帐户]/iCloud/iCloud Drive 在我的设备上。苹果的文档很糟糕!没有人会返回我花了 2 天。 希望这可以帮助遇到同样问题的人。
【讨论】:
【参考方案4】:在我的例子中,我忘了做一个基本的检查:确保您已使用您的 Apple ID 登录,并确保您的应用程序的 iCloud 复选标记已打开。 尤其是使用模拟器时会发生这种情况。
【讨论】:
以上是关于Cloudkit:“错误保存记录写入操作不允许”的主要内容,如果未能解决你的问题,请参考以下文章
如何将 CloudKit 记录数据从“TableView-Controller B”传递到“View-Controller C”?