The title of this blog can be continued with the following line “…such that it works on both iOS7.1 and iOS8 and above”. This post on weekday for date in iOS app is written for Swift version 1.

Weekday for date in iOS

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

Get updates?

As usual, if you find any of my posts useful support me by  buying or even trying one of my apps on the App Store. 

https://mydaytodo.com/apps/

Also, if you can leave a review on the App Store or Google Play Store, that would help too.

Categories: iOSSwift

0 Comments

Leave a Reply

Verified by MonsterInsights