2

에서 가능한 한 짧고 간단하게 유지하겠습니다.Swift Extension, 매개 변수 # 1에 대해 누락 된 인수

나는 내 응용 프로그램에서 여러 가지 용도로 사용하는 NSDate 확장자를 가지고 있지만 아주 이상한 (아주 이상한) 기능에 문제가 있습니다.

확장의 관련 부분은 다음과 같습니다

import Foundation 

extension NSDate { 

    func nineAMMonday() -> NSDate { 
     let greg = NSCalendar.currentCalendar() 
     let componenets = NSDateComponents() 
     componenets.weekday = 2 
     componenets.hour = 9 
     componenets.minute = 0 
     componenets.second = 0 
     return greg.dateFromComponents(componenets)! 
    } 
} 

의 목적은 월요일 아침에 참조되는있는 NSDate를 반환하는 것입니다.

지금까지 너무 좋아

...

나는이 함수를 호출 할 때

문제는, 내가 오류 얻을 수있다 :

Missing Argument For Parameter #1 In Call

나는 비슷한 문제를 가지고있는 사람에 대해 여기 https://stackoverflow.com/a/26156765/3100991 읽기 그러나 그들의 코드는 길고 혼란 스러웠으며 그 해답을 이해하지 못했습니다. 간단한 설명과 수정이 제공된 경우 일반 사회에 유용 할 것이라고 생각합니다.

미리 도움을 주셔서 감사합니다.

루이

답변

2

난 그냥 (놀이터)이 시도하고 그것을 작동합니다. 귀하의 오류가 귀하의 방법으로 부름 받고 있다고 생각합니다. 메서드가 기존 데이트 개체에서 호출해야하는 인스턴스 메서드이기 때문에.

import Foundation 

extension NSDate { 

    func nineAMMonday() -> NSDate { 
     let greg = NSCalendar.currentCalendar() 
     let componenets = NSDateComponents() 
     componenets.weekday = 2 
     componenets.hour = 9 
     componenets.minute = 0 
     componenets.second = 0 
     return greg.dateFromComponents(componenets)! 
    } 
} 
// Call 
var date = NSDate(); 

date.nineAMMonday() 

을하지만 당신의 경우에 할 수있는 가장 좋은 방법은 클래스 FUNC은 다음과 같습니다 그래서 같이 호출하려고합니다.

import Foundation 

extension NSDate { 

    class func nineAMMonday() -> NSDate { 
     let greg = NSCalendar.currentCalendar() 
     let componenets = NSDateComponents() 
     componenets.weekday = 2 
     componenets.hour = 9 
     componenets.minute = 0 
     componenets.second = 0 
     return greg.dateFromComponents(componenets)! 
    } 
} 
// Call 

NSDate.nineAMMonday() 
+0

도움 주셔서 감사합니다. 제 문제는 원래 다음과 같이 호출했기 때문입니다. NSDate.nineAMMonday(). –

+1

그래, 내가 생각한,하지만 귀하의 경우에는 인스턴스 메서드를 할 필요가 없습니다, 당신은 클래스 메서드를 할 수 있습니다. func 선언에 클래스를 추가하고 먼저 호출 한 것처럼 호출해야합니다. (나는 나의 대답을 편집했다) – LastMove

관련 문제