2015-02-08 2 views
0

Мне нужно запланировать уведомление. Если дата, составленная из компонентов текущей даты, с компонентами времени dateFromData, является ранним, чем текущий день, я хотел бы изменить ее на следующий день. Вот что я до сих пор. Доза сравнения даты не работает независимо от того, как я ее установил. Он либо всегда меняет, либо никогда не меняет его.Сравнение Swift NSDate

var dateComps = calendar.components(NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.DayCalendarUnit | NSCalendarUnit.HourCalendarUnit | NSCalendarUnit.MinuteCalendarUnit, fromDate: NSDate()) 

dateComps.hour = calendar.component(NSCalendarUnit.HourCalendarUnit, fromDate: dateFromData) 
dateComps.minute = calendar.component(NSCalendarUnit.MinuteCalendarUnit, fromDate: dateFromData) 


    if fireDate.compare(NSDate()) == NSComparisonResult.OrderedDescending { 
     //change day to next day 

     dateComps.day += 1 
     println("Change day") 
    }else{ 
     println("Do not change day") 
    } 




    let notifactionOfAmountOfWork = UILocalNotification() 
     notifactionOfAmountOfWork.category = "normalNotifactionCatagory" 

    notifactionOfAmountOfWork.fireDate = calendar.dateFromComponents(dateComps) 

ответ

0

Как определяется ваш firstDate? Следующая программа работает, я просто попробовал. Вы можете изменить comps1.day и comps2.day, чтобы он попал в оба условия.

import UIKit 

let calendar1 = NSCalendar.currentCalendar() 
let comps1 = NSDateComponents() 
comps1.day = 7 
let date1 = calendar1.dateByAddingComponents(comps1, toDate: NSDate(), options: NSCalendarOptions.allZeros) 

let calendar2 = NSCalendar.currentCalendar() 
let comps2 = NSDateComponents() 
comps2.day = 0 
let date2 = calendar2.dateByAddingComponents(comps2, toDate: NSDate(), options: NSCalendarOptions.allZeros) 


if date1?.compare(date2!) == NSComparisonResult.OrderedDescending 
{ 
    println("date1 is after date 2") 
}else{ 
    println("date1 is before date 2") 
} 
+1

Спасибо, проблема в том, что dateFromData - это представление выбора даты. –