В Objective-C Я могу очень легко добавить свойство к .h
файл ...Swift пусть свойство устанавливается через prepareForSegue
@property (nonatomic, strong) Person *person;
, а затем установить это свойство во время prepareForSegue:withIdentifier:
. В этом примере класс контроллера вида PersonViewController
. Он предназначен для отображения информации об определенном объекте Person
. Ему нужен объект Person
, чтобы отобразить что-либо, и объект Person
не изменится. Чтобы отобразить другого человека, который потребует и поп и нажмите на другой экземпляр PersonViewController
.
Это, мне бы предположить, что в Swift свойство person
должно быть определено как так ...
let person: Person
кроме этого не может быть. Если я установил его таким образом, то он должен быть инициализирован до конца метода init
... Но нет никакого способа сделать это, поскольку он создается экземпляром Storyboard
.
Так что я мог бы сделать это ...
var person: Person?
за исключением, что это неправильно. PersonViewController
не будет работать без person
, поэтому сделать его необязательным не имеет смысла и делает его var
не имеет смысла, так как person
не изменится.
В дополнение к этому я должен добавить ...
guard let person = person else {return}
для каждой функции, когда мне нужно использовать person
объект.
я мог бы сделать это таким образом ...
var person = Person()
, но это чувствует Hacky и расточительно. Каждый раз, когда я создаю контроллер представления, я теперь создаю, а затем выброшу Person
. Это также var, который не имеет смысла в контексте контроллера вида.
Каков наилучший способ выполнить эквивалентную передачу в свойство во время segue, где свойство не является необязательным, не var
и не создано во время init?
А, ок. Это разумно, я думаю. Жаль, но это все равно должно быть «var». Спасибо – Fogmeister
Это лучший подход, но до сих пор не решает проблему @Fogmeister, это может быть интересный подход к предложению, потому что на самом деле не существует чего-то, чтобы имитировать это поведение –