我正在尝试使用Apple CloudKit的新数据共享功能。我可以成功发送共享链接到其他设备。当我打开它时,我得到共享元数据(一些哈希被截断):
<
CKShareMetadata: 0x170110b30;
shareID=<
CKRecordID: 0x170234020;
recordName=com.mentalfaculty.ensembles.zone.schema2,
zoneID=com.mentalfaculty.ensembles.zone.schema2:_c96e4c45c173bb2215138...
>,
participantType=PrivateUser,
Owner=<
CKUserIdentity: 0x1700b8720;
lookupInfo=<
CKUserIdentityLookupInfo: 0x170664900;
email=me@company.com
>,
cached=0,
nameComponents=MyName,
userID=<
CKRecordID: 0x170229ac0;
recordName=_c96e4c45c173bb2215138...,
zoneID=_defaultZone:__defaultOwner__
>
>,
participantStatus=Pending,
container=iCloud.com.company.app:Sandbox,
rootRecordID=<
CKRecordID: 0x17403a380;
recordName=CDEFileSystemNode_/,
zoneID=com.mentalfaculty.ensembles.zone.schema2:_c96e4c45c173bb2215138...
>,
participantPermission=ReadWrite,
shareURL=https://www.icloud.com/share/...
>
但是,当我尝试接受共享时,我收到此错误:
<
CKError 0x170440120: "Partial Failure" (2/1011);
"Failed to accept some shares";
uuid = 1C3D8534-BE22-42D2-9EDD-...;
container ID = "iCloud.com.company.app.ios.debug";
partial errors: {
https://www.icloud.com/share/... = <
CKError 0x17025f6b0: "Invalid Arguments" (12/2006);
server message = "Cannot convert userId to dsId due to an invalid userId. The userId cannot be used for this container and/or environment."
>
}
>
我注意到元数据中的containerID与错误消息中的containerID不同。元数据中的containerID是“真实”的,而错误消息中的containerID只是应用程序包标识符。 我的问题:
如果需要,我可以提供更多信息。
注意:我正在使用Ensembles框架在云中保存数据。
P.S。我已经多次观看WWDC 2016年会议226,研究了Ensembles的例子,当然,谷歌搜索了几个小时。没有成功。
答案 0 :(得分:0)
我怀疑,问题出在containerID
。在iCloud设置中更改了containerID
(Xcode-&gt;项目设置 - &gt;目标 - &gt;功能-iCloud),因此它与包标识符相同,并且它开始工作。我不知道共享接受方法是否使用与元数据对象中提供的不同containerID
(该方法仅使用包标识符)的错误。