2015-02-18 2 views
1

У меня есть UIDatePicker, который необходимо проверить. Я хочу проверить, является ли будний день из UIDatePicker определенной переменной int.Быстрое сравнение дня недели с int

Я использую

@IBAction func validateDateTime(sender: AnyObject) { 
    var date = self.dateTime.date 

    let formatterWeekday = NSDateFormatter() 
    formatterWeekday.dateFormat = "e" 

    let weekday_string = formatterWeekday.stringFromDate(date) 

} 

, чтобы получить день недели, но как я могу преобразовать его в междунар так что я могу сравнить его с другими значениями Int? Я попробовал это:

weekday_string.intValue() 

но похоже, что weekday_string не поддерживает метод intValue.

+0

попробуйте вот так: http://stackoverflow.com/a/2466033/2115477 – lootsch

+0

Я тоже пробовал это, но я не знаю, как написать этот код быстро. Я очень новичок в кодировании с os ... – Kingalione

+0

Ответ Джерома говорит вам, как писать это быстро. – lootsch

ответ

2

stringFromDate возвращает string. Метод преобразования string в int в Swift является toInt()

Вы можете попробовать:

weekday_string.toInt() 

Или вы можете получить день недели, как int следующим образом:

var myDate = self.dateTime.date 
let myCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar) 
let myComponents = myCalendar.components(.WeekdayCalendarUnit, fromDate: myDate) 
let weekDay = myComponents.weekday 
+0

есть .toInt() работает отлично. thx – Kingalione

+1

@Kingalione: Я предлагаю вам использовать второй подход, который написал Джером, это меньше накладных расходов: анализ даты, превращение ее в строку, а затем превращение строки в целое довольно дорого. – DarkDust

0

Я не достаточно свободно с Swift еще, так что вот ответ в Objective-C. Поскольку у вас уже есть дата, вам не нужно возиться с любыми форматами. Вам просто нужно задать расписание для компонентов:

NSDateComponents *components = [[NSCalendar currentCalendar] components: NSWeekdayCalendarUnit fromDate:date]; 
// components.weekDay is a number, representing the day of the week. 

См NSCalendar documentation и NSDateComponents documentation.

Чтобы сделать его более стабильным, часто рекомендуется использовать определенный календарь вместо текущего календаря по умолчанию (пользователи из разных регионов могут использовать не григорианский календарь). Поэтому вместо [NSCalendar currentCalendar] вы должны использовать [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar].

Смежные вопросы