Я загружаю текстовый файл , кодировка неизвестна, так как она поступает из других источников. Само содержимое исходит из метода macos NSDocument read , который передается в чтение моей модели. Конструктор String требует кодирования при использовании Data , если вы предполагаете, что неправильное значение, которое вы можете получить null . Я создал условный каскад потенциальных кодировок (это то, что другие люди, похоже, делают ), должен быть лучший способ сделать это. Предложения?
override func read(from data: Data, ofType typeName: String) throws {
model.read(from: data, ofType: typeName)
}
В модели:
func read(from data: Data, ofType typeName: String) {
if let text = String(data: data, encoding: .utf8) {
content = text
} else if let text = String(data: data, encoding: .macOSRoman) {
content = text
} else if let text = String(data: data, encoding: .ascii) {
content = text
} else {
content = "?????"
}
}