首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI CKShare设置为只读的默认权限

SwiftUI CKShare设置为只读的默认权限
EN

Stack Overflow用户
提问于 2022-09-22 05:37:30
回答 1查看 51关注 0票数 0

我有几个应用程序,包括CloudKit记录共享,现在它似乎在iOS 16中正常工作。

我只包括读、写和读权限选项,并要求共享收件人在用户联系人中。

这似乎确实像预期的那样工作,但是在股票期权中的默认选择是读写。大部分时间我只想读。我无法找到将默认权限从“可以更改”更改为“仅查看”的方法

我的CloudSharingController非常简单:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 09:49:41

availablePermissions似乎有两对选项:

代码语言:javascript
复制
allowPrivate
allowPublic

代码语言:javascript
复制
allowReadOnly
allowReadWrite

您需要从每对中指定一个,所以在您的情况下,您需要

代码语言:javascript
复制
controller.availablePermissions = [.allowPrivate, .allowReadWrite]

如果您没有从一对中指定一个,那么它似乎是最允许的选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73809780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档