1020 Stimmen

#pragma mark in Swift?

In Objective C, I can use #pragma mark to mark sections of my code in the symbol navigator. Since this is a C preprocessor command, it's not available in Swift. Is there a stand-in for this in Swift, or do I have to use ugly comments?

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

61voto

Nikolai Ruhe Punkte 80427

Im Objective-C-Code erkennt Xcode Kommentare wie // MARK: - foo, was etwas portabler ist als #pragma. Aber diese scheinen auch nicht erkannt zu werden (noch?).

Bearbeitet: Behoben in Xcode 6 Beta 4.

41voto

jqgsninimo Punkte 5674

Ich denke, dass Erweiterungen eine bessere Methode sind anstelle von #pragma mark.

Der Code vor der Verwendung von Erweiterungen:

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 von Erweiterungen:

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

40voto

Antoine Punkte 22558

Xcode 8 verarbeitet es jetzt wie folgt und zeigt es im Methoden-Dropdown an:

Bildbeschreibung hier eingeben

38voto

Daniel Punkte 22831

Heute Morgen beim WWDC habe ich mit einem Apple-Ingenieur im Swift-Labor bestätigt, dass es derzeit keine #pragma oder Äquivalentes gibt, sie betrachten dies als Bug und es wird bald kommen, also schätze ich Beta 2, hoffe ich.

Wie dem auch sei, es ist unterwegs.


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

23voto

Jaydip Punkte 2105

Es gibt drei Optionen, um #pragma_mark in Swift hinzuzufügen:

1) // MARK: - Dein Text hier -

2) // TODO: - Dein Text hier -

3) // FIXME: - Dein Text hier -

Hinweis: Verwende - für Separator

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X