2013-03-07 13 views
39

Das Abmelden von MagicalRecord erfordert ein #define, das vor der ersten Einbindung in das Projekt erstellt werden muss, aber im Falle eines von Cocoapods verwalteten Projekts habe ich keinen Zugriff darauf, ein #define hinzuzufügen Pods Projekt. Wie kann ich das Abmelden in diesem Szenario vollständig abschalten?Cocoapods: Abmelden von MagicalRecord Abmelden

Ich habe ein paar Stunden gebraucht, um einen Weg zu finden, es hier zu tun, in der Hoffnung, dass es anderen hilft.

EDIT: Dies ist kein Duplikat, wie es unter Cocoapods

+0

Mögliches Duplikat [Deaktivieren MagicalRecord Fehlermeldungen und Warnungen] (http://stackoverflow.com/questions/12908584/disable-magicalrecord-error-messages-and-warnings) –

Antwort

79

abzumelden diskutiert Drehen Sie können ein POST_INSTALL Haken verwenden ziemlich jede Build-Einstellung zu ändern. Fügen Sie einfach diesen Code auf Ihre Podfile:

post_install do |installer| 
    target = installer.project.targets.find{|t| t.to_s == "Pods-MagicalRecord"} 
    target.build_configurations.each do |config| 
     s = config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] 
     s = [ '$(inherited)' ] if s == nil; 
     s.push('MR_ENABLE_ACTIVE_RECORD_LOGGING=0') if config.to_s == "Debug"; 
     config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = s 
    end 
end 

Beachten Sie, dass dies nur die Protokollierung in der Debug Konfiguration deaktivieren wird - Protokollierung standardmäßig in der Release Konfiguration deaktiviert.

+4

+1 Für die Freigabe. – Anupdas

+0

Keine Sorge! Würde gerne andere Ansätze zu diesem Problem hören. –

+2

Da ich 'pod update' nur selten ausführe, habe ich es einfach in meine Pods pch-Datei eingefügt. –

13

In meinem Fall baute ich eine Bibliothek, die auf MagicalRecord angewiesen war. Ich wollte nicht, dass meine Benutzer eine Post-Installation in ihrer Pod-Datei hinzufügen müssen, um die lärmende Protokollierung zum Schweigen zu bringen, also habe ich sie stattdessen zu meiner podspec hinzugefügt.

s.prefix_header_contents = '#define MR_ENABLE_ACTIVE_RECORD_LOGGING 0' 

Dies fügt automatisch diese #define Anweisung Pods-prefix.pch, die MagicalRecord Protokollierung in Projekten zum Schweigen gebracht, die meine pod verwenden.

0

Für den Entwicklungszweig (Version 2.3.0 und höher) von Magical Record scheint die Protokollierung immer noch nicht korrekt zu funktionieren. Beim Importieren wie folgt: pod 'MagicalRecord',: git => 'https://github.com/magicalpanda/MagicalRecord',: zweig => 'entwickeln'

Ich habe keine Logging-Ausgabe auf meiner Xcode-Konsole. Aber ich habe das Skript post_install des Cocoapod geändert. Die folgende Beschreibung ist die Protokollierung aktivieren: https://gist.github.com/Blackjacx/e5f3d62d611ce435775e

Damit buildsetting enthalten in GCC_PREPROCESSOR_DEFINITIONS Protokollierung der magischen Akte können in 2.3.0 gesteuert werden ++ mit [MagicalRecord Setlogginglevel:]

1

Sie können die Protokollierung in Pod Projekt ausschalten !

einfach Präprozessormakros hinzufügen:

  1. Gehen Sie einfach in "Pods" (!!!) Projekt.

  2. Dann finden Sie Pods-MagicalRecord Ziel.

  3. wählen "Build Settings"

  4. Finden "von Apple LLVM 6.1 Preprocessing" -> "Processor Macros"

  5. Roll-out "Processor Makros" und fügen Sie Schema "Debug": „MR_ENABLE_ACTIVE_RECORD_LOGGING = 0 "

Es ist alles!

+0

Sobald du 'pod update' ausführst, hört das auf zu arbeiten :( – deanWombourne

5

ich ank Antwort für diejenigen, die neue Version cocoapods neben MagicalRecord 2.3.0 aktualisiert:

post_install do |installer| 
    target = installer.pods_project.targets.find{|t| t.to_s == "MagicalRecord"} 
    target.build_configurations.each do |config| 
    s = config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] 
    s = [ '$(inherited)' ] if s == nil; 
    s.push('MR_LOGGING_DISABLED=1') if config.to_s == "Debug"; 
    config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = s 
    end 
end 

Änderungen:

  • project zu pods_project
  • Ziel Pods-MagicalRecord-MagicalRecord umbenannt umbenannt
  • Makro MR_ENABLE_ACTIVE_RECORD_LOGGING umbenannt in MR_LOGGING_DISABLED und Wert geändert 0-1