Quicklook funktionierte plötzlich nicht mehr mit den .m- und .h-Dateien von xcode

Vor einer Woche funktionierte Quicklook nicht mehr mit .mund - .hDateien. Stattdessen wird mir ein .moder .h-Thumbnail angezeigt. Ich glaube, an diesem Tag tauchte ein Meldungsfeld auf und ich habe es nicht gelesen – ich habe die Frage hastig beantwortet –, aber ich habe nichts mit dem System gemacht. Wie auch immer, jetzt habe ich den Quicklook für diese Dateitypen verloren.

Es funktioniert immer noch für alle anderen Standarddateien. Ich habe versucht, die ".qlgenerator"-Dateien von einem anderen Mac zu kopieren, der dieselbe Betriebssystemversion hat ... und es hat immer noch nicht funktioniert.

Ich habe versucht, Berechtigungen auf der Festplatte zu überprüfen / zu reparieren, es zeigte etwas bezüglich .qlgenerator-Dateien an, aber ich dachte: "Es liegt wahrscheinlich an meinem Kopieren-Einfügen-Ersetzen durch Eindringlingsdateien, die wahrscheinlich einige Berechtigungen geändert haben". Jedenfalls hat es das Problem nicht gelöst.

Ich habe auch versucht qlmanage -r, auszuführen und meinen Mac neu zu starten. Das Problem besteht weiterhin.

Der andere Mac zeigt immer noch die Standardmethode (auch bekannt als Quicklook-Vorschau) für diese Dateitypen.

Irgendeine Idee, was schief gelaufen ist? Glaubst du, dass das Nachrichtenfeld, das ich hastig beantwortet habe, dafür verantwortlich ist? Ich habe das Gefühl, dass es so ist, aber ich bin mir nicht sicher, weil ich weder das System oder irgendetwas konfiguriert habe, noch irgendetwas, das weder mit Quicklook (ich wusste nicht, dass diese Funktion damals einen Namen hatte) noch mit xcode zu tun hat ... Ich bin verloren.

BEARBEITEN Wie @Bootle vorgeschlagen hat, bin ich gerannt

qlmanage -p DATEI

und überraschenderweise hat der Quicklook die Datei korrekt geöffnet, dh Sie können den Inhalt der Datei und die Standard-XCode-Farbgebung dafür sehen. Zusätzlich wurde die folgende Ausgabe im Terminal gedruckt.Geben Sie hier die Bildbeschreibung ein

Also noch weitere Hinweise?

BEARBEITEN Nach der Überprüfung des Protokolls von der Konsole nach der Bearbeitung durch @StvnW sind neue Hinweise aufgetaucht.

Ich hänge das Protokollbild an, nachdem ich Quicklook in einer Datei bestellt habe

UPDATE Die Lösung bestand darin, dass ich ältere Versionen von XCodes seit 3.6.2 ^_^ und anderen Versionen aufbewahrte und sie alle in einem Ordner zusammenfasste, in dem ich mir selbst die Berechtigung zum Zugriff verweigerte. Damit wurden sie auch für das System unzugänglich. Und das Problem wurde gelöst, das System (oder QL) hat sich auf die neueste offizielle XCode-Anwendung festgelegt.

Aber das ist der folgenden Antwort zu verdanken, die mir diesen Hinweis aus dem Debugging gegeben hat. Ich denke, andere Leute, die dasselbe Problem haben, sollten seiner Antwort folgen. Ich markiere diese Antwort als die richtige Antwort

Können Sie Terminal öffnen und diesen Befehl ausführen: qlmanage -p FILEWobei DATEI der Pfad zu einer .h- oder .m-Datei auf Ihrem Computer ist. Und dann kopieren und fügen Sie die Terminalausgabe hier oder in ein Pastebin oder so ein. Danke.

Antworten (2)

Sie könnten erwägen, einfach QLStephen zu verwenden , das die richtige QuickLook-Unterstützung für alle Textdateien unabhängig von ihren Erweiterungen hinzufügt. Es wird auch Dateien ohne Erweiterungen (z . B. README, Makefile) richtig handhaben. Was ich daran mag, ist, dass Sie keine Liste von Erweiterungen führen müssen; QLStephen erkennt Textdateien automatisch. QLStephen ist unabhängig von XCode und ein QL-Plugin, das Sie in /Library/QuickLook/oder einfügen ~/Library/QuickLook/.

Dass ich auch Steven heiße, ist reiner Zufall.

Bearbeiten: Debuggen von QuickLook basierend auf weiteren Informationen von OP:

Aktivieren Sie die QuickLook-Protokollierung:

defaults write -g QLEnableLogging YES

Hier ist eine Referenzprotokollausgabe (in die Konsole geschrieben):

Stock Xcode installiert:

2014-04-29 2:46:08.172 PM quicklookd[19315]: 
    [QL] Thumbnailing file://localhost/Users/user/src/hello/main.m. 
    Content type UTI: public.objective-c-source
    Generator used: <QLGenerator Text.qlgenerator>

2014-04-29 2:46:08.173 PM com.apple.quicklook.satellite[19330]:
    [QL] <QLThumbnailRequest main.m
            token: d45af7955eb9401bc7a49fd6652d1c3aa5cc4a8b;00000000;000000000000001a;
            com.apple.app-sandbox.read;00000001;01000003;0000000003e32849;
            /users/user/src/hello/main.m>.
    Content type UTI: public.objective-c-source.
    Generator used: <QLGenerator /System/Library/QuickLook/Text.qlgenerator>

Drittanbieter-Generator (QLColorCode) installiert:

2014-04-29 2:51:40.458 PM quicklookd[19359]:
    [QL] Thumbnailing file://localhost/Users/user/src/hello/main.m.
    Content type UTI: public.objective-c-source.
    Generator used: <QLGenerator /Users/user/Library/QuickLook/QLColorCode.qlgenerator>

2014-04-29 2:51:40.459 PM com.apple.quicklook.satellite[19367]:
    [QL] <QLThumbnailRequest main.m
            token: d45af7955eb9401bc7a49fd6652d1c3aa5cc4a8b;00000000;000000000000001a;
            com.apple.app-sandbox.read;00000001;01000003;0000000003e32849;
            /users/user/src/hello/main.m>.
    Content type UTI: public.objective-c-source.
    Generator used: <QLGenerator /Users/user/Library/QuickLook/QLColorCode.qlgenerator>

Da die Dinge beim Aufrufen qlmanageüber die Befehlszeile für Sie funktionieren, können Sie möglicherweise die in die Konsole geschriebenen Protokolle mit der Ausgabe des manuellen Aufrufs über die Befehlszeile vergleichen und das Problem erkennen. Wenn nur Xcode installiert ist:

[user@macbook]/Users/user/src/hello$ qlmanage -p -d 1 main.m 
Testing Quick Look preview with files:
    main.m
[DEBUG] Registering <QLGenerator Built-in 0x7fa08241eaa0> for public.image
[DEBUG] Preview test for main.m -- file://localhost/Users/user/src/hello/.
        Content type UTI: public.objective-c-source
[DEBUG] Previewing file://localhost/Users/user/src/hello/main.m.
        Content type UTI: public.objective-c-source.
        Generator used: <QLGenerator Text.qlgenerator>
[DEBUG] Loading <QLGenerator Text.qlgenerator>
[DEBUG] Previewing file://localhost/Users/user/src/hello/main.m finished
aber das hat auch nicht funktioniert, wahrscheinlich weil die Erweiterung von Dateien ihre Funktionalität außer Kraft setzt?
Womöglich. Ich kann auch bestätigen, dass die Info.plist meines Xcodes identisch mit dem ist, was von Bootle vorgeschlagen wurde, und ich bin auch auf Lager Xcode 5.0.2.
Ich habe deine zweite Antwort nicht ganz verstanden :) Du hättest mir sagen sollen, dass ich zur Konsole gehen und mir die Protokolle ansehen soll. Wie auch immer, ich habe neue Beweise gefunden, von denen ich denke, dass das Problem bald behoben sein wird
Entschuldigung, wenn das nicht klar war. Ich habe erwähnt, wo die Protokolle zu finden sind.

QuickLook für diese Dateitypen funktioniert, da der Dateityp in der Info.plist von Xcode angegeben ist.

Damit QuickLook Xcode verwenden kann, um diese Dateien schnell wieder im Finder anzuzeigen, müssen Sie die Info.plist-Datei von Xcode bearbeiten. Dies finden Sie, indem Sie in Ihren Anwendungen mit der rechten Maustaste auf die Datei Xcode.app klicken und auf „Paketinhalt anzeigen“ klicken. Sie finden Info.plist im Inhaltsordner, der sich öffnet.

In der Datei „Info.plist“ sind alle mit Xcode verknüpften Dateitypen als „CFBundleTypeExtensions“-Wörterbücher aufgeführt.

Führen Sie nach dem Öffnen der Plist eine Suche nach <string>h</string>(oder dasselbe mit 'm') durch. Wenn es nicht gefunden werden kann, müssen Sie es hinzufügen.

Hinweis: An dieser Stelle möchten Sie möglicherweise eine Sicherungskopie der gesamten Xcode.app-Datei erstellen, falls etwas schief geht.

Erstellen Sie eine Kopie von Info.plist, indem Sie sie bei gedrückter Alt-Taste auf Ihren Desktop ziehen. Öffnen Sie die Kopie und suchen Sie nach <key>CFBundleExecutable</key>. Sie sehen </array>in der Zeile darüber. Fügen Sie vor dem </array>Textblock den Textblock ein, der es ermöglicht, einen Dateityp mit Xcode zu verknüpfen (siehe unten). Dieser Block sollte mit bzw. beginnen und <dict>enden </dict>.

Für die .h-Datei:

<dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>h</string>
        </array>
        <key>CFBundleTypeIconFile</key>
        <string>c-header_Icon</string>
        <key>CFBundleTypeName</key>
        <string>C Header Source</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSIsAppleDefaultForType</key>
        <true/>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.c-header</string>
        </array>
</dict>

Für die .m-Datei:

<dict>
    <key>CFBundleTypeExtensions</key>
    <array>
        <string>m</string>
    </array>
    <key>CFBundleTypeIconFile</key>
    <string>objective-c-source_Icon</string>
    <key>CFBundleTypeName</key>
    <string>Objective-C Source</string>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>LSIsAppleDefaultForType</key>
    <true/>
    <key>LSItemContentTypes</key>
    <array>
        <string>public.objective-c-source</string>
    </array>
</dict>

Sobald dies erledigt ist, sollten Sie in der Lage sein, die bearbeitete Info.plist zurück in den Xcode.app-Inhaltsordner zu kopieren. Manchmal möchten Apps nicht, dass Sie ihre Plists bearbeiten, und entscheiden sich danach, nicht zu arbeiten. Wenn dies der Fall ist, stellen Sie einfach die Kopie wieder her, die Sie zuvor erstellt haben (sollten).

Dies kann mit jeder Anwendung und jedem Dateityp repliziert werden. Wenn es einen besseren Weg gibt, dies zu tun, vielleicht indem Sie einige Einstellungen in Xcode ändern/festlegen, wäre es gut zu wissen.

Wow, sehr wichtige Informationen. Vielen Dank. Aber als ich die Plist als Text öffnete, enthielt sie eine Menge Müll zusammen mit erkannten Zeichen, was bedeutet, dass sie nicht xml-formatiert ist. Und wenn Sie es als Plist öffnen, finden Sie die "CFBundleTypeExtensions" nicht, stattdessen finden Sie die "CFBundleDocumentTypes". In der Liste konnte ich "item16 (C-Header-Quelle)" einschließlich der CFBundleTypeExtensions "h" finden. und ein weiteres "Element 22 (Ziel-c-Quelle)", das den "m"-Wert enthält. Dies ist XCode 5.0.2. Also ich denke, es ist immer noch nicht korrupt. Vielen Dank, ich hoffe, das hilft.
Ich habe vergessen, dass TextEdit keine Plist-Dateien öffnet. Standardmäßig werden sie von Xcode selbst geöffnet, jedoch nicht in einem XML-ähnlichen Format. Ich verwende TextWrangler für alle Textdateien, Plists und andere Formate gleichermaßen. Sie können die Plist in dem Format öffnen, das ich in meiner Antwort erwähnt habe, indem Sie TextWrangler oder einen anderen ähnlichen Texteditor verwenden, z. B. einen Editor zum Bearbeiten von Code. TextWrangler ist jedoch kostenlos und ich würde es empfehlen. Sie finden es hier: barebones.com/products/textwrangler
Ja, ich kann es jetzt im XML-Format sehen, vielen Dank. Textwrangler hatte ich übrigens schon :) . Wie auch immer, wie ich bereits sagte, und da ich jetzt buchstäblich sehen konnte, was im XML-Format geschrieben ist, kann ich bestätigen, dass ich bereits das habe, was Sie zum Einfügen vorschlagen. Das Problem muss also woanders liegen. Vielen Dank für Ihre große Mühe, ich bin dankbar.