Как назначить nil объекту в Swift. Я получаю ошибку, если она назначена напрямую.
Как назначить nil объекту в Swift. Я получаю ошибку, если она назначена напрямую.
nil не может использоваться с неопциональными константами и переменными. Если постоянный или переменный в вашем коде должен работать с отсутствием значение при определенных условиях, всегда объявляйте его как необязательное значение соответствующего типа
Также очень важно заметить:
Swifts nil не совпадает с nil в Objective-C. В Objective-C, ноль является указателем на несуществующий объект. В Swift ниль не является указатель - это отсутствие значения определенного типа. Варианты любой тип может быть установлен на ноль, а не только на типы объектов
Я надеюсь, что это поможет!
.
Пожалуйста, проверьте ниже -
var lastRecordedLocation: String?
lastRecordedLocation = nil
Чтобы удалить объект, он должен быть объявлен с помощью nil ? знак. Это означает, что значение может (возможно) быть нолем. Поэтому объявите его как:
var lastRecordedLocation: String?
а затем вы можете установить его на nil
lastRecordedLocation = nil
ПРИМЕЧАНИЕ. Если вы определяете необязательную переменную без указания значения по умолчанию, переменная автоматически устанавливается на нуль для вас:
var lastRecordedLocation: String?
// lastRecordedLocation is automatically set to nil
or
lastRecordedLocation = nil
Это означает, что ваш объект lastRecordedLocation
не является типом Optional
.
Если вы сделаете lastRecordedLocation как необязательный, например:
var lastRecordedLocation:String?
Вы можете установить nil для этого объекта позже.
Только необязательный может быть nil
var lastRecordedLocation:CLLocation?
или это
var lastRecordedLocation:CLLocation!
если вы хотите использовать свойство nil, вам нужно Необязательное значение для lastRecordedLocation
Я использовал следующее, чтобы удалить ранее заполненную переменную типа данных
var jsonData = Data()
Эта переменная раньше использовалась для сериализации JSON, но занимала слишком много памяти, поэтому я просто ее повторно инициализировал, и размер снова станет 0 байтами.