我對Swift很陌生,但真的很感興趣。 我想獲得存儲在名爲「Work」的日曆中的所有事件,並將其顯示在tableView中。 我正在尋找這樣的問題,但那裏顯示的代碼似乎有點老,並沒有真正的工作。我怎麼做? tableView應該能夠顯示標題,開始和結束日期。是否有可能像字符串數組中的所有標題一樣?與開始和結束相同嗎? 會很棒的獲得一些提示!如何從日曆中獲取所有事件(Swift)
更新: 我在類之外聲明瞭變量。 現在我嘗試了一個看起來像這樣的代碼,這要感謝我在這裏得到的答案,但是我沒有讓單元格顯示任何東西?!是的,我已經在模擬器的工作日曆中創建了一個testEvent。
override func viewDidAppear(animated: Bool) {
let eventStore = EKEventStore()
switch EKEventStore.authorizationStatusForEntityType(.Event) {
case .Authorized:
readEvents()
case .Denied:
print("Access denied")
case .NotDetermined:
eventStore.requestAccessToEntityType(.Event, completion: { (granted: Bool, NSError) -> Void in
if granted {
self.readEvents()
}else{
print("Access denied")
}
})
default:
print("Case Default")
}
self.tableView.reloadData()
}
func readEvents() {
let eventStore = EKEventStore()
let calendars = eventStore.calendarsForEntityType(.Event)
for calendar in calendars {
if calendar.source.title == "Work" {
let oneMonthAgo = NSDate(timeIntervalSinceNow: -30*24*3600)
let oneMonthAfter = NSDate(timeIntervalSinceNow: +30*24*3600)
let predicate = eventStore.predicateForEventsWithStartDate(oneMonthAgo, endDate: oneMonthAfter, calendars: [calendar])
var events = eventStore.eventsMatchingPredicate(predicate)
for event in events {
titles.append(event.title)
startDates.append(event.startDate)
endDates.append(event.endDate)
}
}
}
}
// MARK: - Table view data source
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return titles.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel!.text = titles[indexPath.row]
cell.detailTextLabel!.text = "From: \(startDates[indexPath.row]) Until: \(endDates[indexPath.row])"
// Configure the cell...
return cell
}
感謝您的幫助,我會嘗試一下! –
我終於嘗試過,但它給了我一個錯誤:獲取所有日曆時出錯:錯誤域= EKCADErrorDomain代碼= 1013「(null)」 我現在需要做什麼? –
好吧,我擺脫了這個錯誤,但我仍然無法得到事件?你可以請檢查我現在有什麼,我更新了原來的帖子! –