Я пытаюсь создать структуру для входного файла с необязательными значками.
Если имя значка передано в качестве параметра, оно загрузится, иначе — нет.
Я получаю ошибку Value of optional type 'String?' must be unwrapped to refer to member 'isEmpty' of wrapped base type 'String'
, которую я не понимаю.
Кроме того, когда я инициализирую структуру, ей по-прежнему требуются параметры, несмотря на необязательный? индикатор.
попробуйте if preIcon != nil
... или if let icon = preIcon
Существует несколько способов: необязательная привязка (if let
), явный метод init
со значениями параметров по умолчанию или необязательные var
iables со значениями пустой строки по умолчанию, которые указывают нет изображения. Просто вызвать isEmpty
по желанию невозможно.
Измените оператор if на этот
if preIcon?.isEmpty == false
Затем измените
var preIcon: String?
var postIcon: String?
Это устранило ошибку Value of optional type 'String?' must be unwrapped to refer to member 'isEmpty' of wrapped base type 'String'
. Все еще получаю Missing arguments for parameters 'preIcon', 'postIcon' in call
, когда пытаюсь инициализировать структуру.`
Изменено let
на var
для этих двух переменных. Проверьте обновление.
Это сделало это. Знаете ли вы, почему использование «let» не позволяет параметру быть необязательным?
Если установлено значение let, то оно должно быть установлено при инициализации. И изменить нельзя. Давайте для констант, var для переменных.
Ах, в то время, когда конкретный экземпляр этой структуры (также известный как причудливый класс) создается (также известный как инициализация), константы должны иметь присвоенное им значение. Это имеет смысл. Приходит из мира .JS и новичок в Swift. Спасибо вам за помощь.
Поскольку preIcon
является необязательным, вам необходимо развернуть его, прежде чем вы сможете получить доступ к его свойствам. Итак, ваша строка должна быть:
if let preIcon = preIcon, !preIcon.isEmpty {
Вы можете узнать больше о необязательной привязке (использованный выше синтаксис if let
) по адресу: https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html.
С точки зрения struct
требующих свойств, помеченных как необязательные, хотя Xcode может включать необязательные свойства в автозаполнение, на самом деле он не требует, чтобы вы включали для них значения - их можно удалить, а ваш инициализатор все равно будет работать.
Включайте код, а не изображения кода, который нельзя копировать/вставлять, искать или читать с помощью программ чтения с экрана.