У меня есть приложение для iOS, которое использует SwiftData с типами @Model. Я переношу его в MacOS и хочу приложение на основе документов, где каждое окно является собственным документом (например, TextEdit). Я понимаю базовую настройку документа с помощью DocumentGroup. Вот пример: < /p>
struct Document: FileDocument {
static var readableContentTypes: [UTType] {
[.textDocument]
}
var text: String
init(text: String = "") {
self.text = text
}
init(configuration: ReadConfiguration) throws {
guard let data = configuration.file.regularFileContents, let string = String(data: data, encoding: .utf8) else {
throw CocoaError(.fileReadCorruptFile)
}
text = string
}
func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
let data = Data(text.utf8)
return .init(regularFileWithContents: data)
}
}
struct DocumentView: View {
@Binding var document: Document
@State var textSelection: TextSelection?
var body: some View {
TextEditor(text: $document.text, selection: $textSelection)
}
}
@main
struct TextEditorApp: App {
var body: some Scene {
DocumentGroup(newDocument: Document()) { file in
DocumentView(document: file.$document)
}
}
}
< /code>
В моей версии iOS «документ» - это тип @Model, сохраненный с помощью SwiftData. Могу ли я использовать этот же подход для приложения MacOS на основе документов? Примеры, которые я видел, показывают только с использованием SwiftData в приложении MacOS, которое отображает все приложение в окне, а не только отдельные документы.
Подробнее здесь: https://stackoverflow.com/questions/797 ... -swiftdata