问题描述
在视图顶部显示UICloudSharingController时,它会显示屏幕,并且当我选择messages选项将消息发送给我要与之共享的人时,它会显示带有“ uploading”消息的纺车并消失-附加。
但是,当我转到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