我有几个应用程序,包括CloudKit记录共享,现在它似乎在iOS 16中正常工作。
我只包括读、写和读权限选项,并要求共享收件人在用户联系人中。
这似乎确实像预期的那样工作,但是在股票期权中的默认选择是读写。大部分时间我只想读。我无法找到将默认权限从“可以更改”更改为“仅查看”的方法
我的CloudSharingController非常简单:
struct CloudSharingView: UIViewControllerRepresentable {
let share: CKShare
let container: CKContainer
let recipe: Recipe
func makeCoordinator() -> CloudSharingCoordinator {
CloudSharingCoordinator(recipe: recipe)
}
func makeUIViewController(context: Context) -> UICloudSharingController {
share[CKShare.SystemFieldKey.title] = recipe.rName
let controller = UICloudSharingController(share: share, container: container)
controller.modalPresentationStyle = .formSheet
controller.delegate = context.coordinator
controller.availablePermissions = [.allowReadWrite, .allowReadOnly]
return controller
}
func updateUIViewController(_ uiViewController: UICloudSharingController, context: Context) {
}
}//cloud sharing view
final class CloudSharingCoordinator: NSObject, UICloudSharingControllerDelegate {
let stack = CoreDataStack.shared
let recipe: Recipe
init(recipe: Recipe) {
self.recipe = recipe
}
func itemTitle(for csc: UICloudSharingController) -> String? {
recipe.rName
}
func cloudSharingController(_ csc: UICloudSharingController, failedToSaveShareWithError error: Error) {
print("Failed to save share: \(error)")
}
func cloudSharingControllerDidSaveShare(_ csc: UICloudSharingController) {
print("Saved the share")
}
func cloudSharingControllerDidStopSharing(_ csc: UICloudSharingController) {
if !stack.isOwner(object: recipe) {
stack.delete(recipe)
}
}
}//cloud sharing coordinator屏幕:

如有任何指导,将不胜感激。Xcode 14.0,iOS 16.0
发布于 2022-11-02 09:49:41
availablePermissions似乎有两对选项:
allowPrivate
allowPublic和
allowReadOnly
allowReadWrite您需要从每对中指定一个,所以在您的情况下,您需要
controller.availablePermissions = [.allowPrivate, .allowReadWrite]如果您没有从一对中指定一个,那么它似乎是最允许的选项。
https://stackoverflow.com/questions/73809780
复制相似问题