diff --git a/VIPER-SWIFT/Classes/Common/Categories/NSCalendar+CalendarAdditions.swift b/VIPER-SWIFT/Classes/Common/Categories/NSCalendar+CalendarAdditions.swift index 316fd4c..c75ed7b 100755 --- a/VIPER-SWIFT/Classes/Common/Categories/NSCalendar+CalendarAdditions.swift +++ b/VIPER-SWIFT/Classes/Common/Categories/NSCalendar+CalendarAdditions.swift @@ -10,7 +10,7 @@ import Foundation extension NSCalendar { class func gregorianCalendar() -> NSCalendar { - return NSCalendar(calendarIdentifier: NSGregorianCalendar) + return NSCalendar(calendarIdentifier: NSGregorianCalendar)! } func dateWithYear(year: Int, month: Int, day: Int) -> NSDate { @@ -19,26 +19,26 @@ extension NSCalendar { components.month = month components.day = day components.hour = 12 - return dateFromComponents(components) + return dateFromComponents(components)! } func dateForTomorrowRelativeToToday(today: NSDate) -> NSDate { let tomorrowComponents = NSDateComponents() tomorrowComponents.day = 1 - return dateByAddingComponents(tomorrowComponents, toDate: today, options: nil) + return dateByAddingComponents(tomorrowComponents, toDate: today, options: nil)! } func dateForEndOfWeekWithDate(date: NSDate) -> NSDate { let daysRemainingThisWeek = daysRemainingInWeekWithDate(date) let remainingDaysComponent = NSDateComponents() remainingDaysComponent.day = daysRemainingThisWeek - return dateByAddingComponents(remainingDaysComponent, toDate: date, options: nil) + return dateByAddingComponents(remainingDaysComponent, toDate: date, options: nil)! } func dateForBeginningOfDay(date: NSDate) -> NSDate { let newComponent = components((NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay), fromDate: date) let newDate = dateFromComponents(newComponent) - return newDate + return newDate! } func dateForEndOfDay(date: NSDate) -> NSDate { @@ -46,8 +46,8 @@ extension NSCalendar { components.day = 1 let toDate = dateForBeginningOfDay(date) let nextDay = dateByAddingComponents(components, toDate: toDate, options: nil) - let endDay = nextDay.dateByAddingTimeInterval(-1) - return nextDay + let endDay = nextDay!.dateByAddingTimeInterval(-1) + return nextDay! } func daysRemainingInWeekWithDate(date: NSDate) -> Int { @@ -61,9 +61,9 @@ extension NSCalendar { func dateForEndOfFollowingWeekWithDate(date: NSDate) -> NSDate { let endOfWeek = dateForEndOfWeekWithDate(date) let nextWeekComponent = NSDateComponents() - nextWeekComponent.setWeek(1) + nextWeekComponent.weekOfYear = 1 let followingWeekDate = dateByAddingComponents(nextWeekComponent, toDate: endOfWeek, options: nil) - return followingWeekDate + return followingWeekDate! } func isDate(date: NSDate, beforeYearMonthDay: NSDate) -> Bool { @@ -81,7 +81,7 @@ extension NSCalendar { func isDate(date: NSDate, duringSameWeekAsDate: NSDate) -> Bool { let dateComponents = components(NSCalendarUnit.WeekCalendarUnit, fromDate: date) let duringSameWeekComponents = components(NSCalendarUnit.WeekCalendarUnit, fromDate: duringSameWeekAsDate) - let result = dateComponents.week() == duringSameWeekComponents.week() + let result = dateComponents.weekOfYear == duringSameWeekComponents.weekOfYear return result } @@ -89,7 +89,7 @@ extension NSCalendar { let nextWeek = dateForEndOfFollowingWeekWithDate(duringWeekAfterDate) let dateComponents = components(NSCalendarUnit.WeekCalendarUnit, fromDate: date) let nextWeekComponents = components(NSCalendarUnit.WeekCalendarUnit, fromDate: nextWeek) - let result = dateComponents.week() == nextWeekComponents.week() + let result = dateComponents.weekOfYear == nextWeekComponents.weekOfYear return result } diff --git a/VIPER-SWIFT/Classes/Common/Store/CoreDataStore.swift b/VIPER-SWIFT/Classes/Common/Store/CoreDataStore.swift index 0921a62..0a76aa1 100755 --- a/VIPER-SWIFT/Classes/Common/Store/CoreDataStore.swift +++ b/VIPER-SWIFT/Classes/Common/Store/CoreDataStore.swift @@ -23,10 +23,10 @@ class CoreDataStore : NSObject { var managedObjectModel : NSManagedObjectModel? var managedObjectContext : NSManagedObjectContext? - init() { + override init() { managedObjectModel = NSManagedObjectModel.mergedModelFromBundles(nil) - persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel) + persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel!) let domains = NSSearchPathDomainMask.UserDomainMask let directory = NSSearchPathDirectory.DocumentDirectory @@ -46,21 +46,21 @@ class CoreDataStore : NSObject { super.init() } - func fetchEntriesWithPredicate(predicate: NSPredicate, sortDescriptors: AnyObject[], completionBlock: ((ManagedTodoItem[]) -> Void)!) { + func fetchEntriesWithPredicate(predicate: NSPredicate, sortDescriptors: [AnyObject], completionBlock: (([ManagedTodoItem]) -> Void)!) { let fetchRequest = NSFetchRequest(entityName: "TodoItem") fetchRequest.predicate = predicate fetchRequest.sortDescriptors = [] managedObjectContext?.performBlock { let queryResults = self.managedObjectContext?.executeFetchRequest(fetchRequest, error: nil) - let managedResults = queryResults! as ManagedTodoItem[] + let managedResults = queryResults! as [ManagedTodoItem] completionBlock(managedResults) } } func newTodoItem() -> ManagedTodoItem { - let entityDescription = NSEntityDescription.entityForName("TodoItem", inManagedObjectContext: managedObjectContext) - let newEntry = NSManagedObject(entity: entityDescription, insertIntoManagedObjectContext: managedObjectContext) as ManagedTodoItem + let entityDescription = NSEntityDescription.entityForName("TodoItem", inManagedObjectContext: managedObjectContext!) + let newEntry = NSManagedObject(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext) as ManagedTodoItem return newEntry } diff --git a/VIPER-SWIFT/Classes/Modules/Add/Application Logic/Manager/AddDataManager.swift b/VIPER-SWIFT/Classes/Modules/Add/Application Logic/Manager/AddDataManager.swift index fadd6d8..81153a0 100755 --- a/VIPER-SWIFT/Classes/Modules/Add/Application Logic/Manager/AddDataManager.swift +++ b/VIPER-SWIFT/Classes/Modules/Add/Application Logic/Manager/AddDataManager.swift @@ -12,7 +12,7 @@ class AddDataManager : NSObject { var dataStore : CoreDataStore? func addNewEntry(entry: TodoItem) { - let newEntry = dataStore?.newTodoItem() as ManagedTodoItem + let newEntry = dataStore?.newTodoItem() as ManagedTodoItem! newEntry.name = entry.name newEntry.date = entry.dueDate; diff --git a/VIPER-SWIFT/Classes/Modules/Add/User Interface/Transition/AddDismissalTransition.swift b/VIPER-SWIFT/Classes/Modules/Add/User Interface/Transition/AddDismissalTransition.swift index 81ba22a..5431407 100755 --- a/VIPER-SWIFT/Classes/Modules/Add/User Interface/Transition/AddDismissalTransition.swift +++ b/VIPER-SWIFT/Classes/Modules/Add/User Interface/Transition/AddDismissalTransition.swift @@ -10,11 +10,11 @@ import Foundation import UIKit class AddDismissalTransition : NSObject, UIViewControllerAnimatedTransitioning { - func transitionDuration(transitionContext: UIViewControllerContextTransitioning!) -> NSTimeInterval { + func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval { return 0.72 } - func animateTransition(transitionContext: UIViewControllerContextTransitioning!) { + func animateTransition(transitionContext: UIViewControllerContextTransitioning) { let fromVC = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) as AddViewController let finalCenter = CGPointMake(160.0, (fromVC.view.bounds.size.height / 2) - 1000.0) diff --git a/VIPER-SWIFT/Classes/Modules/Add/User Interface/Transition/AddPresentationTransition.swift b/VIPER-SWIFT/Classes/Modules/Add/User Interface/Transition/AddPresentationTransition.swift index 88a7205..94fe84f 100755 --- a/VIPER-SWIFT/Classes/Modules/Add/User Interface/Transition/AddPresentationTransition.swift +++ b/VIPER-SWIFT/Classes/Modules/Add/User Interface/Transition/AddPresentationTransition.swift @@ -10,11 +10,11 @@ import Foundation import UIKit class AddPresentationTransition: NSObject, UIViewControllerAnimatedTransitioning { - func transitionDuration(transitionContext: UIViewControllerContextTransitioning!) -> NSTimeInterval { + func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval { return 0.72 } - func animateTransition(transitionContext: UIViewControllerContextTransitioning!) { + func animateTransition(transitionContext: UIViewControllerContextTransitioning) { let fromVC = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) let toVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) as AddViewController @@ -29,7 +29,7 @@ class AddPresentationTransition: NSObject, UIViewControllerAnimatedTransitioning let toViewFrame = CGRectMake(0, 0, 260, 300) toVC.view.frame = toViewFrame - let finalCenter = CGPointMake(fromVC.view.bounds.size.width / 2, 20 + toViewFrame.size.height / 2) + let finalCenter = CGPointMake(fromVC!.view.bounds.size.width / 2, 20 + toViewFrame.size.height / 2) toVC.view.center = CGPointMake(finalCenter.x, finalCenter.y - 1000) let options = UIViewAnimationOptions.CurveEaseIn diff --git a/VIPER-SWIFT/Classes/Modules/Add/User Interface/View/AddViewController.swift b/VIPER-SWIFT/Classes/Modules/Add/User Interface/View/AddViewController.swift index ec50fdc..79d3e23 100755 --- a/VIPER-SWIFT/Classes/Modules/Add/User Interface/View/AddViewController.swift +++ b/VIPER-SWIFT/Classes/Modules/Add/User Interface/View/AddViewController.swift @@ -12,18 +12,18 @@ import UIKit class AddViewController: UIViewController, UITextFieldDelegate, AddViewInterface { var eventHandler : AddModuleInterface? - @IBOutlet var nameTextField : UITextField + @IBOutlet var nameTextField : UITextField? @IBOutlet var datePicker : UIDatePicker? var minimumDate : NSDate = NSDate() var transitioningBackgroundView : UIView = UIView() @IBAction func save(sender: AnyObject) { - eventHandler?.saveAddActionWithName(nameTextField.text, dueDate: datePicker!.date) + eventHandler?.saveAddActionWithName(nameTextField!.text, dueDate: datePicker!.date) } @IBAction func cancel(sender: AnyObject) { - nameTextField.resignFirstResponder() + nameTextField?.resignFirstResponder() eventHandler?.cancelAddAction() } @@ -35,7 +35,7 @@ class AddViewController: UIViewController, UITextFieldDelegate, AddViewInterface transitioningBackgroundView.userInteractionEnabled = true - nameTextField.becomeFirstResponder() + nameTextField?.becomeFirstResponder() if let realDatePicker = datePicker { realDatePicker.minimumDate = minimumDate @@ -45,7 +45,7 @@ class AddViewController: UIViewController, UITextFieldDelegate, AddViewInterface override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) - nameTextField.resignFirstResponder() + nameTextField?.resignFirstResponder() } func dismiss() { @@ -53,7 +53,7 @@ class AddViewController: UIViewController, UITextFieldDelegate, AddViewInterface } func setEntryName(name: NSString) { - nameTextField.text = name + nameTextField?.text = name } func setEntryDueDate(date: NSDate) { diff --git a/VIPER-SWIFT/Classes/Modules/List/Application Logic/Interactor/ListInteractor.swift b/VIPER-SWIFT/Classes/Modules/List/Application Logic/Interactor/ListInteractor.swift index f3b38d3..b3d9744 100755 --- a/VIPER-SWIFT/Classes/Modules/List/Application Logic/Interactor/ListInteractor.swift +++ b/VIPER-SWIFT/Classes/Modules/List/Application Logic/Interactor/ListInteractor.swift @@ -31,10 +31,10 @@ class ListInteractor : NSObject, ListInteractorInput { }) } - func upcomingItemsFromToDoItems(todoItems: TodoItem[]) -> UpcomingItem[] { + func upcomingItemsFromToDoItems(todoItems: [TodoItem]) -> [UpcomingItem] { let calendar = NSCalendar.autoupdatingCurrentCalendar() - var upcomingItems : UpcomingItem[] = [] + var upcomingItems : [UpcomingItem] = [] for todoItem in todoItems { var dateRelation = calendar.nearTermRelationForDate(todoItem.dueDate, relativeToToday: clock.today()) diff --git a/VIPER-SWIFT/Classes/Modules/List/Application Logic/Interactor/ListInteractorIO.swift b/VIPER-SWIFT/Classes/Modules/List/Application Logic/Interactor/ListInteractorIO.swift index 6be6403..6114b0a 100755 --- a/VIPER-SWIFT/Classes/Modules/List/Application Logic/Interactor/ListInteractorIO.swift +++ b/VIPER-SWIFT/Classes/Modules/List/Application Logic/Interactor/ListInteractorIO.swift @@ -14,5 +14,5 @@ protocol ListInteractorInput { } protocol ListInteractorOutput { - func foundUpcomingItems(upcomingItems: UpcomingItem[]) + func foundUpcomingItems(upcomingItems: [UpcomingItem]) } diff --git a/VIPER-SWIFT/Classes/Modules/List/Application Logic/Manager/ListDataManager.swift b/VIPER-SWIFT/Classes/Modules/List/Application Logic/Manager/ListDataManager.swift index 546c714..4a281fe 100755 --- a/VIPER-SWIFT/Classes/Modules/List/Application Logic/Manager/ListDataManager.swift +++ b/VIPER-SWIFT/Classes/Modules/List/Application Logic/Manager/ListDataManager.swift @@ -12,7 +12,7 @@ import Foundation class ListDataManager : NSObject { var coreDataStore : CoreDataStore? - func todoItemsBetweenStartDate(startDate: NSDate, endDate: NSDate, completion: ((TodoItem[]) -> Void)!) { + func todoItemsBetweenStartDate(startDate: NSDate, endDate: NSDate, completion: (([TodoItem]) -> Void)!) { let calendar = NSCalendar.autoupdatingCurrentCalendar() let beginning = calendar.dateForBeginningOfDay(startDate) let end = calendar.dateForEndOfDay(endDate) @@ -20,7 +20,7 @@ class ListDataManager : NSObject { let predicate = NSPredicate(format: "(date >= %@) AND (date <= %@)", beginning, end) let sortDescriptors = [] - coreDataStore?.fetchEntriesWithPredicate(predicate, + coreDataStore?.fetchEntriesWithPredicate(predicate!, sortDescriptors: sortDescriptors, completionBlock: { entries in let todoItems = self.todoItemsFromDataStoreEntries(entries) @@ -28,8 +28,8 @@ class ListDataManager : NSObject { }) } - func todoItemsFromDataStoreEntries(entries: ManagedTodoItem[]) -> TodoItem[] { - var todoItems : TodoItem[] = [] + func todoItemsFromDataStoreEntries(entries: [ManagedTodoItem]) -> [TodoItem] { + var todoItems : [TodoItem] = [] for managedTodoItem in entries { let todoItem = TodoItem(dueDate: managedTodoItem.date, name: managedTodoItem.name) diff --git a/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/ListPresenter.swift b/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/ListPresenter.swift index bd24ab0..5cf947e 100755 --- a/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/ListPresenter.swift +++ b/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/ListPresenter.swift @@ -18,7 +18,7 @@ class ListPresenter : NSObject, ListInteractorOutput, ListModuleInterface, AddMo listInteractor?.findUpcomingItems() } - func foundUpcomingItems(upcomingItems: UpcomingItem[]) { + func foundUpcomingItems(upcomingItems: [UpcomingItem]) { if upcomingItems.count == 0 { userInterface?.showNoContentMessage() } else { @@ -26,12 +26,12 @@ class ListPresenter : NSObject, ListInteractorOutput, ListModuleInterface, AddMo } } - func updateUserInterfaceWithUpcomingItems(upcomingItems: UpcomingItem[]) { + func updateUserInterfaceWithUpcomingItems(upcomingItems: [UpcomingItem]) { let upcomingDisplayData = upcomingDisplayDataWithItems(upcomingItems) userInterface?.showUpcomingDisplayData(upcomingDisplayData) } - func upcomingDisplayDataWithItems(upcomingItems: UpcomingItem[]) -> UpcomingDisplayData { + func upcomingDisplayDataWithItems(upcomingItems: [UpcomingItem]) -> UpcomingDisplayData { let collection = UpcomingDisplayDataCollection() collection.addUpcomingItems(upcomingItems) return collection.collectedDisplayData() diff --git a/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplayData.swift b/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplayData.swift index 9c0a93b..e5f78ac 100755 --- a/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplayData.swift +++ b/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplayData.swift @@ -9,11 +9,10 @@ import Foundation struct UpcomingDisplayData : Equatable { - let sections : UpcomingDisplaySection[] = [] + let sections : [UpcomingDisplaySection] = [] - init(sections: UpcomingDisplaySection[]) { + init(sections: [UpcomingDisplaySection]) { self.sections = sections - self.sections.unshare() } } diff --git a/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplayDataCollection.swift b/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplayDataCollection.swift index d152667..cf4855f 100755 --- a/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplayDataCollection.swift +++ b/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplayDataCollection.swift @@ -10,13 +10,13 @@ import Foundation class UpcomingDisplayDataCollection { let dayFormatter = NSDateFormatter() - var sections : Dictionary = Dictionary() + var sections : Dictionary = Dictionary() init() { dayFormatter.dateFormat = NSDateFormatter.dateFormatFromTemplate("EEEE", options: 0, locale: NSLocale.autoupdatingCurrentLocale()) } - func addUpcomingItems(upcomingItems: UpcomingItem[]) { + func addUpcomingItems(upcomingItems: [UpcomingItem]) { for upcomingItem in upcomingItems { addUpcomingItem(upcomingItem) } @@ -28,11 +28,11 @@ class UpcomingDisplayDataCollection { } func addDisplayItem(displayItem: UpcomingDisplayItem, dateRelation: NearTermDateRelation) { - if var realSection : UpcomingDisplayItem[] = sections[dateRelation] { + if var realSection : [UpcomingDisplayItem] = sections[dateRelation] { realSection.append(displayItem) sections[dateRelation] = realSection } else { - var newSection : UpcomingDisplayItem[] = [] + var newSection : [UpcomingDisplayItem] = [] newSection.append(displayItem) sections[dateRelation] = newSection } @@ -53,7 +53,7 @@ class UpcomingDisplayDataCollection { } func collectedDisplayData() -> UpcomingDisplayData { - let collectedSections : UpcomingDisplaySection[] = sortedUpcomingDisplaySections() + let collectedSections : [UpcomingDisplaySection] = sortedUpcomingDisplaySections() return UpcomingDisplayData(sections: collectedSections) } @@ -65,14 +65,14 @@ class UpcomingDisplayDataCollection { return UpcomingDisplaySection(name: sectionTitle, imageName: imageName, items: items) } - func sortedUpcomingDisplaySections() -> UpcomingDisplaySection[] { + func sortedUpcomingDisplaySections() -> [UpcomingDisplaySection] { let keys = sortedNearTermDateRelations() - var displaySections : UpcomingDisplaySection[] = [] + var displaySections : [UpcomingDisplaySection] = [] for dateRelation in keys { var itemArray = sections[dateRelation] - if itemArray { + if itemArray != nil { var displaySection = displaySectionForDateRelation(dateRelation) displaySections.insert(displaySection, atIndex: displaySections.endIndex) } @@ -81,8 +81,8 @@ class UpcomingDisplayDataCollection { return displaySections } - func sortedNearTermDateRelations() -> NearTermDateRelation[] { - var array : NearTermDateRelation[] = [] + func sortedNearTermDateRelations() -> [NearTermDateRelation] { + var array : [NearTermDateRelation] = [] array.insert(NearTermDateRelation.Today, atIndex: 0) array.insert(NearTermDateRelation.Tomorrow, atIndex: 1) array.insert(NearTermDateRelation.LaterThisWeek, atIndex: 2) diff --git a/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplaySection.swift b/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplaySection.swift index 5164a31..20ee08c 100755 --- a/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplaySection.swift +++ b/VIPER-SWIFT/Classes/Modules/List/User Interface/Presenter/UpcomingDisplaySection.swift @@ -12,15 +12,14 @@ import Foundation struct UpcomingDisplaySection : Equatable { let name : String = "" let imageName : String = "" - var items : UpcomingDisplayItem[] = [] + var items : [UpcomingDisplayItem] = [] - init(name: String, imageName: String, items: UpcomingDisplayItem[]?) { + init(name: String, imageName: String, items: [UpcomingDisplayItem]?) { self.name = name self.imageName = imageName - if items { + if items != nil { self.items = items! - self.items.unshare() } } } diff --git a/VIPER-SWIFT/Classes/Modules/List/User Interface/View/ListViewController.swift b/VIPER-SWIFT/Classes/Modules/List/User Interface/View/ListViewController.swift index 954c4bd..9ab5f9a 100755 --- a/VIPER-SWIFT/Classes/Modules/List/User Interface/View/ListViewController.swift +++ b/VIPER-SWIFT/Classes/Modules/List/User Interface/View/ListViewController.swift @@ -16,7 +16,7 @@ class ListViewController : UITableViewController, ListViewInterface { var dataProperty : UpcomingDisplayData? var strongTableView : UITableView? - @IBOutlet var noContentView : UIView + @IBOutlet var noContentView : UIView? override func viewDidLoad() { super.viewDidLoad() @@ -58,7 +58,7 @@ class ListViewController : UITableViewController, ListViewInterface { tableView.reloadData() } - override func numberOfSectionsInTableView(tableView: UITableView!) -> Int { + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { var numberOfSections = dataProperty?.sections.count if dataProperty?.sections.count == nil { @@ -68,25 +68,25 @@ class ListViewController : UITableViewController, ListViewInterface { return numberOfSections! } - override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { let upcomingSection = dataProperty?.sections[section] return upcomingSection!.items.count } - override func tableView(tableView: UITableView!, titleForHeaderInSection section: Int) -> String! { + override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { let upcomingSection = dataProperty?.sections[section] return upcomingSection!.name } - override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let upcomingSection = dataProperty?.sections[indexPath.section] let upcomingItem = upcomingSection!.items[indexPath.row] let cell = tableView.dequeueReusableCellWithIdentifier(ListEntryCellIdentifier, forIndexPath: indexPath) as UITableViewCell - cell.textLabel.text = upcomingItem.title; - cell.detailTextLabel.text = upcomingItem.dueDate; - cell.imageView.image = UIImage(named: upcomingSection!.imageName) + cell.textLabel?.text = upcomingItem.title; + cell.detailTextLabel?.text = upcomingItem.dueDate; + cell.imageView?.image = UIImage(named: upcomingSection!.imageName) cell.selectionStyle = UITableViewCellSelectionStyle.None; return cell