Я хотел бы, чтобы мой класс init() в Swift выкинул ошибку, если что-то пошло не так, как при загрузке файла в строку внутри класса. Как только файл будет загружен, строка не будет изменена, поэтому я бы предпочел использовать let. Это работает:
class FileClass {
var text: NSString = ""
init() throws {
do {
text = try NSString( contentsOfFile: "/Users/me/file.txt", encoding: NSUTF8StringEncoding ) }
catch let error as NSError {
text = ""
throw error
}
}
}
но когда я заменяю
var text: NSString = ""
с
let text: NSString
Я получаю . Все хранимые свойства экземпляра класса должны быть инициализированы перед тем, как выбраться из ошибки инициализации.
Я пробовал различные подходы, например, чтобы сделать текст необязательным
let text: NSString?
но не нашли никакой работы. Возможно ли, чтобы текст был загружен из файла, неизменный, и для init(), чтобы выбросить ошибку? Могу ли я получить торт и съесть его три?
Большое спасибо заранее!