Инициализатор для Int, который принимает строку (init(_:radix:)
), является «неисправным». Это означает, что если вы передадите ей строку, которая не может быть преобразована в Int
, она вернет ноль.
Звучит так, что String
, с которого вы начинаете, также является опциональным, поэтому вам нужно развернуть строку, а также развернуть получившийся Int:
Вам следует поискать «необязательные привязки» и защитные операторы, которые являются двумя способами справиться с необязательными:
Дополнительный переплет
if let datesString = dates,
let var dateNum = Int(datesString) {
var answer = FartsPerDate(dateNum: dateNum )
print(answer)
} else {
print("You did not enter a valid number")
}
Или используя защитное заявление:
guard let datesString = dates,
let var dateNum = Int(dates) else {
//Normally you'd use a return here but you are not inside a function so you have to
//exit the entire playground
fatalError("You did not enter a valid number")
}
var answer = FartsPerDate(dateNum: dateNum )
print(answer)
Работа с опционами - это то, с чем КАЖДЫЙ программист должен смириться. Я предлагаю вам скачать Apple iBook «Язык программирования Swift» и прочитать раздел об опциях, а затем выполнить несколько упражнений, используя их, пока не почувствуете себя комфортно.