2017-10-11 138 views
0

我正在尝试使用Apple CloudKit的新数据共享功能。我可以成功发送共享链接到其他设备。当我打开它,我得到共享元数据(一些哈希值会被截断):CloudKit共享 - 由于userId无效,无法将userId转换为dsId

< 
    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 protected] 
     >, 
     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在错误消息中只是应用程序包标识符。 我的问题:

  1. containerIDs是不是很正常?
  2. 这个错误怎么解决?

我可以根据需要提供更多信息。

注意:我正在使用Ensembles框架将数据保存到云中。

P.S.我已经多次观看了WWDC 2016会议226,查看了Ensembles示例,当然还有Google搜索了好几个小时。没有成功。

回答

0

正如我怀疑,问题是与containerID。在iCloud设置(Xcode-> Project Settings-> Target-> Capabilities-iCloud)中更改containerID,以便它与捆绑包标识符相同,并开始工作。我不知道这是否是共享接受方法使用与元数据对象中提供的containerID(该方法仅使用包标识符)不同的错误。