Swift - инициализация переменной типа структурных массивов
Извините, это мой первый проект в Swift3, и я задал много вопросов новичкам (я из C:)
Я пытаюсь создать переменную для хранения свойств для платформы, которая работает на Arduino. Этот код взаимодействует с Arduino через BLE.
Платформа изготовлена из досок (до 4), которые содержат модули (до 4). Каждая структура имеет свойства, и я хочу иметь возможность изменять их значения во время выполнения кода.
Приведенный ниже код не компилируется -> Ошибка: "У класса 'ViewController' нет инициализаторов".
Я понимаю, что в моем объявлении структуры отсутствует определение (например, сколько плат или модулей объявлено по умолчанию), но я не понимаю, как заставить его работать.
Вот мои вопросы:
Кто-нибудь знает, как заставить его работать с минимальными изменениями? (Я не хотел бы переключаться на класс, потому что я меньше понимаю, как они работают...)
Я прочитал страницу Swift [Initialization][1], и большинство их примеров используют "let" вместо "var". Если я использую 'let' для объявления, я не могу изменить значения свойств позже в коде... я что-то упускаю при использовании переменной?
Спасибо!
в ViewController.swift:
class ViewController: UIViewController
{
struct moduleStruct
{
var address: UInt8 = 0
var status: UInt8 = 0
var settings: [UInt8] = [0,0,0,0,0,0];
var temp: Double = 0.0
}
struct boardStruct
{
var type: UInt8 = 0
var module: [moduleStruct]
}
struct platformStruct
{
var firmwareRevision: String = "0.0"
var board: [boardStruct]
}
var myPlatform : platformStruct
override func viewDidLoad()
{
super.viewDidLoad()
...
// example of use
myPlatform.board[1].module[0].type = 3
...
}
=== 4/3/17 РЕДАКТИРОВАТЬ - РАБОЧЕЕ РЕШЕНИЕ ===
struct moduleStruct
{
var address: UInt8 = 0
var status: UInt8 = 0
var settings: [UInt8] = [0,0,0,0,0,0];
var temp: Float = 0.0
init () {}
}
struct boardStruct
{
var type: UInt8 = 0
var module : [moduleStruct] = []
init ()
{
let emptyModule = moduleStruct()
self.module.append(emptyModule)
self.module.append(emptyModule)
self.module.append(emptyModule)
self.module.append(emptyModule)
}
}
struct platformStruct
{
var firmwareRevision: String = "0.0"
var board : [boardStruct] = []
init ()
{
let emptyBoardStruct = boardStruct()
self.board.append(emptyBoardStruct)
self.board.append(emptyBoardStruct)
self.board.append(emptyBoardStruct)
self.board.append(emptyBoardStruct)
}
}
var myPlatform : platformStruct = platformStruct()
override func viewDidLoad()
{
super.viewDidLoad()
...
// example of use
myPlatform.board[1].module[0].type = 3
...
}