2016-10-07 10 views
2

У меня есть приложение, в котором я должен добавлять события в календарь по умолчанию, который работал нормально до iOS 10. Теперь в iOS 10 он не предоставляет доступ. Я установил use legacy swift language version в yes. Мой кодEKEventStore requestAccessToEntityType аварийное приложение в iOS 10 и выше

let eventStore = EKEventStore() 
switch EKEventStore.authorizationStatusForEntityType(EKEntityType.Event) { 
    case .Authorized: 
      //access 
    case .Denied: 
      print("Access denied") 
    case .NotDetermined: 
     eventStore.requestAccessToEntityType(EKEntityType.Event, completion: 
       {[weak self] (granted: Bool, error: NSError?) -> Void in 
        if granted { 
         //access 
        } else { 
         print("Access denied") 
        } 
       }) 
    default: 
      print("Case Default") 
    } 

Хотя отладить мое приложение сбой в eventStore.requestAccessToEntityType в Xcode 8.

Screenshot of debug

Мое приложение является живой, и мне нужно решить. Любая помощь присваивается. Заранее спасибо.

ответ

7

КСНО 10 сборок, необходимо задать описание сообщение для разрешения оповещения о Info.plist

Внимание: приложение, IOS, связанное с или после прошивки 10,0 должен содержать в своем файле Info.plist ключи описания использования для типов данных, к которым должен получить доступ, или он сработает. Чтобы получить доступ к напоминаниям и календарю данных, он должен включать в себя NSRemindersUsageDescription и NSCalendarsUsageDescription, соответственно.

от Apple Docs

+0

Это действительно странно, что он просто падает без предупреждения или выхода на консоль. Обычно вы получаете явное предупреждение об этом. – Nailer

+0

Я согласен, должно быть какое-то предупреждение, то же самое происходит с разрешением камеры, потребовалось некоторое время, чтобы выяснить – Leonardo

0
let eventStore = EKEventStore() 
switch EKEventStore.authorizationStatus(for: .event) { 
case .authorized: break 
//access 
case .denied: 
    print("Access denied") 
case .notDetermined: 
    eventStore.requestAccess(to: .event, completion: 
     {[weak self] (granted: Bool, error: Error?) -> Void in 
      if granted { 
       //access 
      } else { 
       print("Access denied") 
      } 
     }) 
default: 
    print("Case Default") 
} 

С XCode 8 и быстрым 3 это новый формат. Ли вы проверить приложение на прошивке 10.

+0

Да, у меня есть тест в ИО 10 - Xcode 8. И я не мигрировали к быстрой 3. Для выпуска UI из раскадровки в Xcode 8, я должен использовать Xcode 7.3. – Max