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)
    }
}

0 ответов

Другие вопросы по тегам