Ще запазя това възможно най-кратко и просто.
Имам разширение за 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, който има предвид понеделник сутрин.
Дотук добре...
Проблемът е, когато се опитам да извикам тази функция, получавам грешка:
Липсващ аргумент за параметър №1 в разговор
Четох тук https://stackoverflow.com/a/26156765/3100991 за някой, който имаше подобен проблем, обачекодът им беше дълъг и объркващ и аз не разбрах отговора. Мисля, че би било полезно за общата общност, ако беше предоставено просто обяснение и поправка.
Благодарим предварително за вашата помощ!
Лоик
Отговори:
2 за отговор № 1Просто опитвам това (на детската площадка) и работи. Мисля, че грешката ви е в призива на вашия метод. тъй като вашият метод е екземпляр метод, трябва да го извикате на съществуващ обект дата. Затова се опитайте да го наречете така:
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()
Но във вашия случай най-доброто, което можете да направите, е класна функция.
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()