/ / Swift Extension, brak argumentu dla parametru nr 1 w wywołaniu - swift, parametry, błędy kompilatora, argumenty, rozszerzenia swift

Rozszerzenie Swift, brakujący argument dla parametru nr 1 w wywołaniu - szybkie, parametry, błędy kompilatora, argumenty, rozszerzenia swift

Utrzymam to tak krótko i prosto, jak to możliwe.

Mam rozszerzenie NSDate, którego używam do wielu rzeczy w całej mojej aplikacji, ale napotkałem problem z (dziwnie) bardzo prostą funkcją.

Odpowiednia część rozszerzenia to:

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)!
}
}

Jego celem jest po prostu zwrócenie daty NSD, która odnosi się do poniedziałku rano.

Jak na razie dobrze...

Problem polega na tym, że gdy próbuję wywołać tę funkcję, pojawia się błąd:

Brak argumentu dla parametru nr 1 w wywołaniu

Czytam tutaj https://stackoverflow.com/a/26156765/3100991 o kimś, kto miał podobny problemich kod był długi i mylący, a ja nie rozumiałem odpowiedzi. Myślę, że byłoby użyteczne dla ogólnej społeczności, gdyby podano proste wyjaśnienie i poprawkę.

Dzięki za pomoc z góry!

Loic

Odpowiedzi:

2 dla odpowiedzi № 1

Po prostu próbuję tego (na placu zabaw) i działa. Myślę, że twój błąd jest wywołany twoją metodą. ponieważ twoja metoda jest metodą instancji, musisz ją wywołać na istniejącym obiekcie daty. Więc spróbuj to tak nazwać:

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()

Ale w twoim przypadku najlepszą rzeczą do zrobienia jest funkcja klasy.

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()