Markdown-Verarbeitung in Swift für iOS und macOS: Bibliotheken und Beispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Markdown in Swift (iOS/macOS): Bibliotheken und praktische Beispiele



Markdown ist eine leichtgewichtige Auszeichnungssprache, die häufig zur Textformatierung in Dokumentationen, Chats und Bildungsanwendungen verwendet wird. Im Swift-Ökosystem (iOS/macOS) gibt es mehrere ausgereifte Bibliotheken, die das Parsen, Rendern und Konvertieren von Markdown in native Darstellungen ermöglichen. In diesem Artikel betrachten wir die wichtigsten Werkzeuge: Down, Ink und SwiftMarkdown, und zeigen Beispiele für die Integration in SwiftUI und UIKit.



1. Die Bibliothek Down (cmark-basiert)



Down ist die beliebteste Bibliothek für die Arbeit mit Markdown in Swift. Sie basiert auf dem leistungsstarken C-Parser cmark und unterstützt den CommonMark-Standard. Down ermöglicht die Konvertierung von Markdown in HTML, NSAttributedString, PDF und sogar in AST (Abstract Syntax Tree).



Installation

Fügen Sie in Package.swift hinzu:

dependencies: [    .package(url: "https://github.com/johnxnguyen/Down.git", from: "0.9.4")]


Beispiel: Rendern von Markdown in NSAttributedString

import Down

let markdownString = "# Überschrift

Dies ist **fetter** Text und *kursiver* Text."let down = Down(markdownString: markdownString)

do { let attributedString = try down.toAttributedString() // Verwenden Sie in UITextView oder UILabel textView.attributedText = attributedString} catch { print("Parsing-Fehler: \\(error)")}


Down unterstützt auch benutzerdefinierte Stile über DownStyler:

let styler = DownStyler(configuration: DownStylerConfiguration(    fonts: FontCollection(        heading1: .boldSystemFont(ofSize: 24),        body: .systemFont(ofSize: 16)    ),    colors: ColorCollection(        heading1: .systemBlue,        body: .label    )))let attributedString = try down.toAttributedString(styler: styler)


2. Die Bibliothek Ink (John Sundell)



Ink ist ein leichtgewichtiger Markdown-Parser von John Sundell. Er benötigt keine externen Abhängigkeiten (reines Swift) und eignet sich ideal für einfache Aufgaben: Extrahieren von Überschriften, Listen, Links. Ink gibt einen Baum von Blockelementen (block-level elements) zurück, der angepasst werden kann.



Installation über Swift Package Manager

dependencies: [    .package(url: "https://github.com/JohnSundell/Ink.git", from: "0.6.0")]


Beispiel: Parsen und Extrahieren von Überschriften

import Ink

let markdown = """# Hauptüberschrift## UnterüberschriftNormaler Text mit **fetter** Hervorhebung."""

let parser = MarkdownParser()let result = parser.parse(markdown)

for heading in result.headings { print("Ebene \\(heading.level): \\(heading.text)")}// Ausgabe:// Ebene 1: Hauptüberschrift// Ebene 2: Unterüberschrift


Ink unterstützt auch benutzerdefinierte Modifikatoren zur Erweiterung der Syntax:

let modifier = Modifier(target: .inlineCode) { html, markdown in    return "<span style=\\"color: red;\\">\\(html)</span>"}let parser = MarkdownParser(modifiers: [modifier])


3. SwiftMarkdown (von Apple)



SwiftMarkdown ist die offizielle Bibliothek von Apple, vorgestellt auf der WWDC 2022. Sie ist tief in das SwiftUI-Ökosystem integriert und unterstützt alle Markdown-Erweiterungen, einschließlich Tabellen, Codeblöcke mit Syntaxhervorhebung und verschachtelte Listen. SwiftMarkdown verwendet AttributedString aus Foundation, was die Lokalisierung und dynamische Schriftarten vereinfacht.



Installation

Fügen Sie das Projekt über Xcode hinzu: File → Add Packages → apple/swift-markdown.



Beispiel: Anzeigen von Markdown in SwiftUI

import MarkdownUIimport SwiftUI

struct ContentView: View { let markdown = """ # Willkommen Dies ist ein **Beispiel** der Verwendung

Empfehlungen