SwiftUI FileDocument с использованием класса вместо структуры
Я запустил приложение macOS на основе документов в SwiftUI и использую FileDocument (не Reference FileDocument) в качестве типа документа. В каждом руководстве, которое я видел, даже в собственном видео Apple WWDC, где это обсуждается (https://developer.apple.com/wwdc20/10039), для определения FileDocument всегда используется структура .
Мой вопрос: есть ли проблема с использованием класса в структуре, определяющей документ. Это не приводит к каким-либо предупреждениям Xcode, но я хотел убедиться, что не создаю никаких проблем для своего приложения, прежде чем идти по этому пути.
Ниже приведен пример кода того, о чем я говорю: объявлениеTestProjectData
как класс для использования вDocumentDataAsClassInsteadOfStructDocument
- структура как FileDocument?
public class TestProjectData: Codable{
var anotherString: String
init(){
anotherString = "Hello world!"
}
}
struct DocumentDataAsClassInsteadOfStructDocument: FileDocument, Codable {
var project: TestProjectData
init() {
project = TestProjectData()
}
static var readableContentTypes: [UTType] { [.exampleText] }
init(configuration: ReadConfiguration) throws {
guard let data = configuration.file.regularFileContents,
let _ = String(data: data, encoding: .utf8)
else {
throw CocoaError(.fileReadCorruptFile)
}
let fileContents = try JSONDecoder().decode(Self.self, from: data)
self = fileContents
}
func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
let data = try JSONEncoder().encode(self)
return .init(regularFileWithContents: data)
}
}