Frage #pragma markieren in Swift?


In Objective C kann ich verwenden #pragma mark um Abschnitte meines Codes im Symbolnavigator zu markieren. Da es sich um einen C-Präprozessorbefehl handelt, ist dieser in Swift nicht verfügbar. Gibt es dafür in Swift einen Ersatz oder muss ich hässliche Kommentare verwenden?


799
2018-06-03 14:05


Ursprung


Antworten:


Sie können verwenden // MARK:


Historisch, vor Xcode 6 Beta 4

Ich habe gerade mit einem Ingenieur hier auf der WWDC gesprochen, und die aktuelle Beta von Xcode implementiert die

// MARK: 

Stil noch, aber mir wird gesagt, zukünftige Versionen werden.

Es wurde auch vorgeschlagen, dass die liberale Verwendung von Klassenerweiterungen sowieso eine bessere Praxis sein könnte. Da Erweiterungen Protokolle implementieren können, können Sie z. Fügen Sie alle Delegiertenmethoden für Tabellenansichten in eine Erweiterung ein und gruppieren Sie Ihren Code auf einer semantischeren Ebene als #pragma mark ist fähig zu.


1002
2018-06-04 12:46



Für diejenigen, die Erweiterungen im Gegensatz zu Pragma-Zeichen verwenden möchten (wie im ersten Kommentar erwähnt), hier ist, wie man es von einem Swift Engineer implementiert:

import UIKit

class SwiftTableViewController: UITableViewController {

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)

    }

    override func viewDidLoad() {
        super.viewDidLoad()

    }
}

extension SwiftTableViewController {
    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
        let cell = tableView?.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell;

        cell.textLabel.text = "Hello World"

        return cell
    }

}

Es ist auch nicht unbedingt die beste Praxis, aber so macht man es, wenn man möchte.


156
2018-06-05 20:00



Bis zu Xcode 5 die Präprozessordirektive #pragma mark existiert.

Ab Xcode 6 müssen Sie verwenden // MARK:

Diese Präprozessor-Funktionen ermöglichen es, eine gewisse Struktur in das Funktions-Dropdown-Feld des Quellcode-Editors zu bringen.

einige Beispiele :

// MARK:

-> wird ein horizontaler Teiler vorangestellt

// MARK: your text goes here

-> puts 'Ihr Text geht hier' fett in der Dropdown-Liste

// MARK: - your text goes here

-> puts 'Ihr Text geht hier' fett in der Dropdown-Liste, vor einem horizontalen Teiler

update: screenshot hinzugefügt, da einige Leute immer noch Probleme damit haben:

enter image description here


152
2017-10-16 15:49



Pragma mark - [SOME TEXT HERE] wurde in verwendet Objective-C, um mehrere Funktionen zusammenzufassen durch Trennlinie.

Im Schnell Sie können dies mit Hilfe erreichen MARK, TODO OR FIXME

ich. KENNZEICHEN :  //MARK: viewDidLoad 

Dies wird ein erstellen horizontale Linie mit Funktionen gruppiert unter viewDidLoad (in Screenshot 1 gezeigt)

Screenshot 1

ii. MACHEN :  //TODO: - viewDidLoad

Dies wird die Funktion unter gruppieren TODO: - viewDidLoad Kategorie (in Screenshot 2 gezeigt)

Screenshot 2

iii. FIXME:  //FIXME - viewDidLoad 

Dies wird die Funktion unter gruppieren FIXME: - viewDidLoad Kategorie (in Screenshot 3 gezeigt)

Screenshot 3


100
2017-10-09 13:52



In Objective-C-Code erkennt Xcode Kommentare wie // MARK: - foo Das ist ein bisschen tragbarer als #pragma. Aber diese scheinen auch nicht aufgegriffen zu werden (noch?).

Bearbeiten: In Xcode 6 Beta 4 behoben.


53
2018-06-03 14:12



Ich denke Extensions ist ein besserer Weg statt #pragma mark.

Der Code vor der Verwendung Extensions:

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
    ...

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        ...
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        ...
    }

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        ...
    }
}

Der Code nach der Verwendung Extensions:

class ViewController: UIViewController {
    ...
}

extension ViewController: UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        ...
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        ...
    }
}

extension ViewController: UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
       ...
    }
}

35
2018-06-30 09:05



Heute morgen auf der WWDC mit einem Apple Engineer im Swift-Labor bestätigt, dass es momentan keine #pragma oder ähnliches gibt, halten sie dies für einen Fehler, und es wird bald kommen, also hoffe ich Beta 2, hoffe ich.

Wie auch immer, es ist auf dem Weg.


Xcode unterstützt jetzt // MARK :, // TODO: und // FIXME Orientierungspunkte, um Ihren Code zu kommentieren und listet sie in der Sprungleiste auf


31
2018-06-06 21:58



Xcode 8 handhabt es jetzt wie folgt und taucht im Methoden-Dropdown auf:

enter image description here


30
2018-06-17 00:25



Benutzen

// MARK: SectionName

oder

// MARK: - SectionName

Dies wird eine Linie oberhalb der Pragma-Markierung ergeben, die es lesbarer macht.

Einfach hinzufügen

// MARK: - <#label#>

zu Ihren Code-Schnipsel.

Alternativer Weg -

Verwenden Sie es auf diese Weise

private typealias SectionName = ViewController
private extension SectionName  {
    // Your methods
}

Dies wird nicht nur Markierung hinzufügen (genau wie Pragma-Marke), sondern auch den Code gut trennen.


16
2017-11-21 10:54



Es gibt drei Optionen zum Hinzufügen #pragma_mark in Swift:

1) // MARK: - your text here -

2) // TODO: - your text here -

3) // FIXME: - your text here -

Hinweis: Verwendet - für Trennzeichen hinzufügen


16
2017-09-30 08:53



//# MARK: - Spinner Class Methods

Fügen Sie eine Zeile zwischen dem Doppelpunkt und Ihrer Beschreibung ein, um eine Trennlinie einzufügen. Dies hilft, Ihren Code noch besser zu organisieren. Der Code und das obige Screenshot verwenden den MARK-Kommentar mit einer Zeile.

  1. // # MARK: - Textmethoden (LINIE)
  2. // # MARK: Textmethoden (KEINE ZEILE)

Dies funktioniert nur mit dem MARK-Kommentar.

enter image description here


13
2018-02-29 09:35