How do I get the day of the week for a date in my iOS app (using Swift)?

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

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

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,

@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

Lastly, I am working on my startup full-time right now, so if you find my blogposts useful and want to see me share more useful stuff in the future, please do support me. You can support me, 

Whichever version you try please leave us a review. An app store review from you would really help us.

Comments

Popular posts from this blog

Upload to AWS S3 from Java API

Addressing app review rejections for auto-renewing subscription in-app purchase (iOS)

Getting started with iOS programming using Swift (Part 1)