首页 > 解决方案 > 无法在 Swift 4.2 中请求访问 IOS 日历的权限

问题描述

我已经尝试过请求允许将项目添加到 IOS 日历的早期示例。它们不适用于 Xcode 10.1 (Swift 4.2)。当我尝试编译代码时,出现错误。如果我注释掉以“EKEventstore.requestAccess”开头的行,代码将执行“.not.Determined”循环。

错误是“实例成员 'requestAccess' 不能用于类型 'EKEventStore';您的意思是使用此类型的值吗?”

谁能找到我的错误,以便 IOS 应用有权将事件添加到日历?

func SOGetPermissionCalendarAccess() {

    switch EKEventStore.authorizationStatus(for: .event) {

    case .authorized:
        print("Authorized")

    case .denied:
        print("Access denied")

    case .notDetermined:
        EKEventStore.requestAccess(to: .event, completion:
            {[weak self] (granted: Bool, error: Error?) -> Void in
                if granted {
                    print("Access granted")
                } else {
                    print("Access denied")
                }
        })

        print("Not Determined")
    default:
        print("Case Default")
        }

}

标签: iosiphoneswift4xcode10ios12

解决方案


您应该如下创建事件存储实例,

let eventStore = EKEventStore()

之后,您可以如下提出权限请求,

switch EKEventStore.authorizationStatus(for: .event) {

        case .authorized:
            print("Authorized")

        case .denied:
            print("Access denied")

        case .notDetermined:
            eventStore.requestAccess(to: .event, completion:
                {(granted: Bool, error: Error?) -> Void in
                    if granted {
                        print("Access granted")
                    } else {
                        print("Access denied")
                    }
            })

            print("Not Determined")
        default:
            print("Case Default")
        }

请参阅此链接以获取更多信息。


推荐阅读