The title of this blog can be continued with the following line "...such that it works on both iOS7.1 and iOS8 and above".
For a certain feature of my app, I needed to find out what day of the week it is for a give date and a lazy Google search lead me to the following code
Well as it turns out, the method that includes the fromDate parameter, was introduced in iOS 8.0. I mean if you cmd+click that method in XCode, it should take you to the method signature where you will see the following,
For a certain feature of my app, I needed to find out what day of the week it is for a give date and a lazy Google search lead me to the following code
let today = NSDate()
let calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)!
var components:Int = calendar.component(.WeekdayCalendarUnit, fromDate: today)
So I included that code in my app and first tested it on my iPhone 6 and it was working great, I was like "phew! one more thing done for my app". Unfortunately, that expression was a bit premature and I realised that when the app crashed after I deployed it to my old iPhone 5 running iOS7.1. This is the error I got,
[_NSCopyOnWriteCalendarWrapper component:fromDate:]: unrecognized selector sent to instance 0x7f8452f4e490
@availability(iOS, introduced=8.0)
func component(unit: NSCalendarUnit, fromDate date: NSDate) -> Int
So one way to get the day of the week such that it works on both iOS7.1 and 8, would be to use the following code, (fyi, I think this code may work on iOS7 too, but I just haven't had the chance to test it on iOS7).let yesterDayOfWeekInt = NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitWeekday, fromDate: today).weekday // 1
Comments