Я сделал вызов команды Treehouse, и у меня была проблема, которую я хотел спросить. В основном я создал func внутри enum, который принимает конкретный случай перечисления и инициализирует данный объект. Он сказал мне создать его внутри перечисления, но, к сожалению, когда я это делаю, я наткнулся на некоторые ошибки. Я смог закончить вызов, сделав это за пределами перечисления, но я не думаю, что это именно то, что я должен был делать.Проблема с типами в swift?
В любом случае, проблема заключалась в том, что когда он возвращал объект UIBarButtonItem, если он был назначен константе, тип константы - «() -> UIBarButtonItem» или в зависимости от того, как настроен переключатель, выходят как «(Button) -> UIBarButtonItem». Я не уверен, что означает символ «->» в этом случае. Почему он не полностью переходит в класс? Что здесь происходит? В учебнике прямо перед этим, похоже, мы сделали то же самое, поэтому я не уверен, почему он не работает.
enum Button {
case Done(String)
case Edit(String)
func toUIBarButtonItem() -> UIBarButtonItem {
switch self {
case .Done: return UIBarButtonItem(title: "Done", style: .Done, target: nil, action: nil)
case .Edit: return UIBarButtonItem(title: "Plain", style: .Plain, target: nil, action: nil)
}
}
}
let done = Button.Done("Done")
let doneButton = Button.toUIBarButtonItem(done)
Это код, который я запускаю, не включая класс UIBarButtonItem. Надеюсь, это достаточно информации, чтобы понять, о чем я прошу.
Alright, так почему переменная держать функцию вместо предполагаемого объекта, если эта функция возвращает объект? Отредактировал сообщение, чтобы показать код, если это поможет. – Resistant
Да, спасибо, я понял, что я не называл это на экземпляре, но это было потому, что, прежде чем мне нужно было его передать, я не думал, что имеет смысл называть это сам, а затем также передавать его. как только я сменил переключатель на себя, это имело больше смысла, я просто никогда не менял часть, на которой я ее называл. Это все еще позволяло мне пройти, даже если больше не указано, что есть аргумент. Удивленный, он не сделал никаких ошибок, но, по крайней мере, я понимаю сейчас, спасибо за помощь! – Resistant