Swift3 Swift 3创建事件存储

Swift3 Swift 3创建事件存储,swift3,eventkit,reminders,Swift3,Eventkit,Reminders,我想将提醒保存到默认的提醒位置。但当我按下按钮时,我得到了一个致命错误:在展开可选值时意外地发现了nil。。。我对这一点很陌生,我找到的大多数例子都过于复杂,或者在Swift 3中没有 class ViewController: UIViewController { var eventStore: EKEventStore? @IBOutlet weak var reminderText: UITextField! @IBAction func setReminder(_ sender:

我想将提醒保存到默认的提醒位置。但当我按下按钮时,我得到了一个致命错误:在展开可选值时意外地发现了nil。。。我对这一点很陌生,我找到的大多数例子都过于复杂,或者在Swift 3中没有

class ViewController: UIViewController {

var eventStore: EKEventStore?

@IBOutlet weak var reminderText: UITextField!

@IBAction func setReminder(_ sender: Any) {

    let reminder = EKReminder(eventStore: self.eventStore!)

    reminder.title = "Go to the store and buy milk"
    reminder.calendar = (eventStore?.defaultCalendarForNewReminders())!

    do {
        try eventStore?.save(reminder,
                             commit: true)
    } catch let error {
        print("Reminder failed with error \(error.localizedDescription)")
    }

   } 
 }

由于这是一段简单的代码,我想在我找到答案后,我会发布我的答案,以供将来更快的人使用。我总是喜欢简单的例子

import UIKit
import EventKit

class ViewController: UIViewController {

var eventStore = EKEventStore()
var calendars:Array<EKCalendar> = []

// Not used at this time
@IBOutlet weak var reminderText: UITextField!

@IBAction func setReminder(_ sender: Any) {


    let reminder = EKReminder(eventStore: self.eventStore)

    reminder.title = "Go to the store and buy milk"
    reminder.calendar = eventStore.defaultCalendarForNewReminders()

    do {
        try eventStore.save(reminder,
                            commit: true)
    } catch let error {
        print("Reminder failed with error \(error.localizedDescription)")
    }

}



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

  // get permission
    eventStore.requestAccess(to: EKEntityType.reminder, completion:
        {(granted, error) in
            if !granted {
                print("Access to store not granted")
            }
    })

 // you need calender's permission for the reminders as they live there
    calendars = eventStore.calendars(for: EKEntityType.reminder)

    for calendar in calendars as [EKCalendar] {
        print("Calendar = \(calendar.title)")
    }

}


override func viewWillAppear(_ animated: Bool) {
}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}
导入UIKit
导入事件工具包
类ViewController:UIViewController{
var eventStore=EKEventStore()
变量日历:数组=[]
//此时不使用
@IBMOutlet弱var提醒文本:UITextField!
@iAction func设置提醒(\发送方:任何){
let remention=ek提醒(eventStore:self.eventStore)
remention.title=“去商店买牛奶”
employment.calendar=eventStore.defaultcalendarfornewemployers()
做{
尝试eventStore.save(提醒,
提交:true)
}捕捉错误{
打印(“提醒失败,错误\(error.localizedDescription)”)
}
}
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后,通常从nib执行任何其他设置。
//获得许可
eventStore.requestAccess(到:eEntityType.reminder,完成:
{(已授予,错误)在
如果!当然{
打印(“未授予对存储的访问权”)
}
})
//你需要日历的许可,因为他们住在那里
calendars=eventStore.calendars(用于:eEntityType.reminder)
日历中的日历为[EKCalendar]{
打印(“日历=\(Calendar.title)”)
}
}
覆盖函数视图将出现(uo动画:Bool){
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
}

由于这是一段简单的代码,我想在我找到答案后,我会发布我的答案,以供将来更快的人使用。我总是喜欢简单的例子

import UIKit
import EventKit

class ViewController: UIViewController {

var eventStore = EKEventStore()
var calendars:Array<EKCalendar> = []

// Not used at this time
@IBOutlet weak var reminderText: UITextField!

@IBAction func setReminder(_ sender: Any) {


    let reminder = EKReminder(eventStore: self.eventStore)

    reminder.title = "Go to the store and buy milk"
    reminder.calendar = eventStore.defaultCalendarForNewReminders()

    do {
        try eventStore.save(reminder,
                            commit: true)
    } catch let error {
        print("Reminder failed with error \(error.localizedDescription)")
    }

}



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

  // get permission
    eventStore.requestAccess(to: EKEntityType.reminder, completion:
        {(granted, error) in
            if !granted {
                print("Access to store not granted")
            }
    })

 // you need calender's permission for the reminders as they live there
    calendars = eventStore.calendars(for: EKEntityType.reminder)

    for calendar in calendars as [EKCalendar] {
        print("Calendar = \(calendar.title)")
    }

}


override func viewWillAppear(_ animated: Bool) {
}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}
导入UIKit
导入事件工具包
类ViewController:UIViewController{
var eventStore=EKEventStore()
变量日历:数组=[]
//此时不使用
@IBMOutlet弱var提醒文本:UITextField!
@iAction func设置提醒(\发送方:任何){
let remention=ek提醒(eventStore:self.eventStore)
remention.title=“去商店买牛奶”
employment.calendar=eventStore.defaultcalendarfornewemployers()
做{
尝试eventStore.save(提醒,
提交:true)
}捕捉错误{
打印(“提醒失败,错误\(error.localizedDescription)”)
}
}
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后,通常从nib执行任何其他设置。
//获得许可
eventStore.requestAccess(到:eEntityType.reminder,完成:
{(已授予,错误)在
如果!当然{
打印(“未授予对存储的访问权”)
}
})
//你需要日历的许可,因为他们住在那里
calendars=eventStore.calendars(用于:eEntityType.reminder)
日历中的日历为[EKCalendar]{
打印(“日历=\(Calendar.title)”)
}
}
覆盖函数视图将出现(uo动画:Bool){
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
}

对于@adamprocter示例,我们还需要在info.plist文件中的消息中添加“NSRemindersUsageDescription”密钥。我尝试将此添加为注释,但我不符合条件。

对于@adamprocter示例,我们还需要在info.plist文件中的消息中添加“NSRemindersUsageDescription”密钥。我尝试添加此作为评论,但我不符合条件。

您能帮我在remider中添加alram吗。?您能帮我在remider中添加alram吗。?