/ / Swift разширение, липсващ аргумент за параметър №1 в разговор - swift, параметри, грешки в компилатора, аргументи, бързи разширения

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, който има предвид понеделник сутрин.

Дотук добре...

Проблемът е, когато се опитам да извикам тази функция, получавам грешка:

Липсващ аргумент за параметър №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()