CKRecordZoneID对每个用户是否必须是唯一的?

时间:2015-03-26 20:31:38

标签: ios cloudkit

是否为每个用户创建了Cloudkit记录区域,或者它是否适用于所有人?

  

CKRecordZoneID对象唯一标识数据库中的记录区域。

这似乎意味着它对每个人都有影响。

  

记录区域ID通过名称字符串和创建区域的用户的ID区分一个区域与另一个区域。

但是,ID附加所有者名称的事实,使其听起来像每个用户一样?

我问的原因是我想知道我是否可以为应用创建一个RecordZoneID,或者是否需要按用户存储(在NSUserDefaults中)

1 个答案:

答案 0 :(得分:2)

简短的回答是,区域名称只需要在用户私有数据库中的其他区域中是唯一的。

CKRecordZoneID和区域名称之间存在微妙但重要的区别。

CKRecordZoneID在整个容器中必须是唯一的,但CKRecordZoneID不仅仅是区域名称。

如果查看CKRecordZoneID,您会发现它同时具有zoneName属性和ownerName属性。 ownerName是当前用户(或CKOwnerDefaultName的记录ID,在将值发送到服务器之前,它将被真实用户ID替换。

zoneNameownerName的组合在整个容器中必须是唯一的,但由于每个用户都有自己唯一的用户ID(用于ownerName),因此您可以创建一个区域每个用户使用相同的zoneName并且没有任何冲突。