NSKeyedArchiver
- это не какой-то магический инструмент, который находит все свойства в классе и сериализует их все.Он вызывает метод NSCoding
, который выполняет тяжелую работу по сериализации.
Вы еще не переопределили init(coder:)
или encode(with:)
.Вот почему ваша собственность не была заархивирована.
Я не особо рекомендую такой подход для создания точной копии UIView
.UIView
s - это просто средство отображения ваших данных (или модели), поэтому вам, вероятно, следует продублировать ваши данные и затем отобразить их с новым UIView
.Вы можете написать такой метод:
func createView(thatDisplays data: SomeType) -> CustomUIView {
// return a new CustomUIView here, configured to display that data...
}
// or as an initialiser:
init(dataToDisplay: SomeType) { ... }
И создать все свои CustomUIView
таким образом.Тогда у вас будут почти одинаковые представления - единственное отличие - это отображаемые данные.Передача тех же данных этому методу - почти то же самое, что дублирование UIView
не так ли?