2016-07-30 1 views
1

NSDate를 다른 날짜로 변경할 수있는 확장 프로그램을 작성하려고합니다. 나는 자기를 변형시킬 확장을하고 싶다.NSDate 확장자에서 Self를 바꾸는 방법 Swift?

다른 방법을 확인했지만 자체 수정 방법을 찾을 수 없습니다. 나는 이와 비슷한 것을 시도하고 있지만 작동하지 않습니다.

let date = NSDate() 
// set date to tomorrow 
date.changeDate(.Day, number: 1, date: date) 

해결책은 무엇인가 : 다른 파일에서

extension NSDate { 
    func changeDate(unitType: NSCalendarUnit, number: Int, date: NSDate) { 

     self.laterDate(NSCalendar.currentCalendar().dateByAddingUnit(
      .Day, 
      value: number, 
      toDate: date, 
      options: [] 
     )!) 
    } 
} 

나는 그런 일을하고 있는가? ...

Date 객체는 불변 , 있습니다

을 따라서 당신은 확장 메서드에 self을 변이 할 수없는 다음 NSDate reference에서

답변

3

(강조는 추가). 새로운 날짜를 다른 NSDate 개체로 반환하려면 이 필요합니다.

extension NSDate { 

    func changedDate(unitType: NSCalendarUnit, number: Int) -> NSDate { 
     return self.laterDate(NSCalendar.currentCalendar().dateByAddingUnit(
      .Day, 
      value: number, 
      toDate: self, 
      options: [] 
      )!) 
    } 
} 

var date = NSDate() 
date = date.changedDate(.Day, number: 1) 
+0

감사합니다. 알 겠어. – Danny

관련 문제