Должны быть инициализированы все переменные до окончания инициализации или вызова методов. Ты создаёшь структуру данных. Сделай переменные данными по умолчанию или опциональными. Тогда я думаю будет все работать.
Я заметил такую штуку, что если дать значение по умолчанию, а потом в init записать то, которое нужно, то по итогу переменная будет иметь то самое значение по умолчанию, но не то что нужно. Не понимаю почему так работает, данные по умолчанию же просто заглушка, почему init не меняет их