Как сделать приложение на основе документов с SwiftDataIOS

Программируем под IOS
Ответить
Anonymous
 Как сделать приложение на основе документов с SwiftData

Сообщение Anonymous »

У меня есть приложение для 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»