2

Я сохраню это как можно короче и просто.Быстрое расширение, отсутствующий аргумент для параметра № 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() 

Но в вашем случае лучше всего сделать, это класс функ.

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()', в то время как я должен был позвонить так: 'NSDate(). NineAMMonday()'. –

+1

Да, это то, что я думал, но в вашем случае вам не нужно делать метод экземпляра, вы можете сделать метод класса. Итак, вам нужно добавить класс в объявлении func и называть его так, как вы это сделали. (Я отредактировал свой ответ) – LastMove

Смежные вопросы