无法与UICloudSharingController共享;消失,带有“正在上传”消息

问题描述

在视图顶部显示UICloudSharingController时,它会显示屏幕,并且当我选择messages选项将消息发送给我要与之共享的人时,它会显示带有“ uploading”消息的纺车并消失-附加

screenshot

但是,当我转到cloudkit仪表板时,根记录已共享。但是我不能和特定的人分享。是因为它具有全球共享性吗?我该如何解决

self.shareInfraRecord(zoneID: appDelegate.privateContactZoneID,completion: { (status) in
     if ( status == false) {
             return
      }
    })

func shareInfraRecord(zoneID: CKRecordZone.ID,completion: @escaping(Bool) -> Void) {
    
    if let rootRecord = self.rootRecord {
        if self.rootRecord?.share == nil {
            let sharingController = UICloudSharingController { (controller,preparationHandler: @escaping (ckshare?,CKContainer?,Error?) -> Void) in
                
                let shareID = CKRecord.ID(recordName: UUID().uuidString,zoneID: zoneID)
                var share = ckshare(rootRecord: rootRecord,shareID: shareID)
               
                share[ckshare.SystemFieldKey.title] = Cloud.ShareInfrastructure.ContactShareTitleKey as CKRecordValue?
                share[ckshare.SystemFieldKey.shareType] = Cloud.ShareInfrastructure.ContactShareTypeKey as CKRecordValue?
               
                let modifyRecZoneOp = CKModifyRecordsOperation(recordsToSave:[rootRecord,share],recordIDsToDelete: nil)
                modifyRecZoneOp.modifyRecordsCompletionBlock = { (records,recordID,error) in
                    if error != nil {
                        if let ckerror = error as? ckerror {
                            if let serverVersion = ckerror.serverRecord as? ckshare {
                                share = serverVersion
                            }
                            completion(false)
                        }
                    }
                    preparationHandler(share,self.defaultContainer,error)

                }
                self.privateDB?.add(modifyRecZoneOp)
            }
        
            sharingController.availablePermissions = [.allowReadOnly,.allowPrivate]
            sharingController.delegate = self
            sharingController.popoverPresentationController?.sourceView = self.view
        
            self.present(sharingController,animated:true,completion:nil)

    } else {
            let shareRecordID = rootRecord.share!.recordID
            let fetchRecordsOp = CKFetchRecordsOperation(recordIDs: [shareRecordID])
        
            fetchRecordsOp.fetchRecordsCompletionBlock = { recordsByRecordID,error in
                guard error == nil,let share = recordsByRecordID?[shareRecordID] as? ckshare  else {
                    if let ckerror = error as? ckerror {
                        self.aErrorHandler.handleckerror(ckerror: ckerror)
                        //self.savetoCloudKitStatus(recordName: myRecordName,success: false)
                    }
                    completion(false)
                    return
                }
               
                dispatchQueue.main.async {
                    let sharingController = UICloudSharingController(share: share,container: self.defaultContainer!)
                    completion(true)
                    //completionHandler(sharingController)
                }
            }
            self.privateDB?.add(fetchRecordsOp)
        }
    }
}

解决方法

这可能有点晚了,但我在使用 export PENTAHO_DI_JAVA_OPTIONS=-Xms1g -Xmx3g 时也遇到了这个问题,似乎问题只是确保设置的“功能”部分中的 iCloud 容器名称与我的应用程序包匹配名称即NSPersistentCloudKitContainer