2014-06-06 16 views
6

Próbuję napisać następujący kod Objective-C w SWIFT:Error „dodatkowy argument na rozmowy” przy przejściu argumentu metody

NSCalendar *cal = [NSCalendar currentCalendar]; 
NSDate *now = [NSDate date]; 
NSDate *startOfTheWeek; 
NSTimeInterval interval; 
[cal rangeOfUnit:NSWeekCalendarUnit 
     startDate:&startOfTheWeek 
     interval:&interval 
     forDate:now]; 

będzie pisać na początku tego tygodnia do startOfTheWeek i czas trwania tygodnie do interval.

na placu zabaw piszę

let now:NSDate = NSDate() 
var startDate:NSDate 
var duration: NSTimeInterval // also tried "var duration: CMutablePointer<NSTimeInterval>" 
let cal = NSCalendar.currentCalendar() 
cal.rangeOfUnit(unit: NSCalendarUnit.WeekCalendarUnit, startDate: startDate, interval: duration, forDate: now)" 

Chociaż uzupełniania kodu mówi mi podpis jest

cal.rangeOfUnit(<#unit: NSCalendarUnit#>, startDate: AutoreleasingUnsafePointer<NSDate?>, interval: <#CMutablePointer<NSTimeInterval>#>, forDate: <#NSDate?#>) 

błąd występuje mówiąc Extra argument 'interval' in call

Co robię źle?

Próbowałem też

cal.rangeOfUnit(NSCalendarUnit.WeekCalendarUnit, startDate: startDate, interval: duration, forDate: now) 

ale to daje błąd

„nie można znaleźć przeciążenie dla«rangeOfUnit», który akceptuje dostarczonych argumentów.”

+0

Spróbuj 'cal.rangeOfUnit (NSCalendarUnit.WeekCalendarUnit, startDate: & startDate, interval: & duration, forDate: now) ', nie mam tutaj kompilatora, więc nie mogę sprawdzić. –

Odpowiedz

8

Spróbuj tego:

let now = NSDate() 
var startDate: NSDate? = nil 
var duration: NSTimeInterval = 0 
let cal = NSCalendar.currentCalendar() 

cal.rangeOfUnit(NSCalendarUnit.WeekCalendarUnit, startDate: &startDate, 
    interval: &duration, forDate: now) 

(domyślnie pierwszy parametr ma nazwę zewnętrznego, a zatem nie powinno być nazwane.)

+0

"nie można znaleźć przeciążenia dla" rangeOfUnit ", które akceptuje podane argumenty." – vikingosegundo

+0

Prawo; Zaktualizowałem swoją odpowiedź. –

Powiązane problemy