2013-03-07 23 views
39

La disattivazione della disconnessione di MagicalRecord richiede l'uso di #define prima che venga incluso per la prima volta nel progetto, ma nel caso di un progetto gestito da Cocoapods non è possibile aggiungere un #define nel Progetto pod. Come posso disattivare completamente la registrazione in questo scenario?Cocoapods: attivazione della registrazione MagicalRecord

Mi ci sono volute un paio d'ore per trovare un modo per farlo, postando qui nella speranza che possa aiutare gli altri.

EDIT: questo non è un duplicato come si discute girando la disconnessione sotto Cocoapods

+0

Eventuali duplicati di messaggi di errore [Disabilita MagicalRecord e avvertenze] (http://stackoverflow.com/questions/12908584/disable-magicalrecord-error-messages-and-warnings) –

risposta

79

È possibile utilizzare un gancio post_install di modificare praticamente qualsiasi impostazione build. Basta aggiungere il codice al tuo 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 

Si noti che questo sarà disattivare solo la registrazione nella configurazione di debug - la registrazione è disabilitata di default nella configurazione rilascio.

+4

+1 per la condivisione. – Anupdas

+0

Nessun problema! Mi piacerebbe sentire altri approcci a questo problema. –

+2

Poiché raramente eseguo 'pod update', l'ho semplicemente aggiunto al file pch dei miei pod. –

13

Nel mio caso, stavo costruendo una libreria che dipendeva da MagicalRecord. Non volevo che i miei utenti dovessero aggiungere una post_install nel loro Podfile per silenziare la registrazione rumorosa, quindi l'ho aggiunta al mio podspec.

s.prefix_header_contents = '#define MR_ENABLE_ACTIVE_RECORD_LOGGING 0' 

Questo aggiunge automaticamente questo #define dichiarazione alla Pods-prefix.pch, che fa tacere la registrazione MagicalRecord in progetti che utilizzano il mio pod.

0

Per il ramo di sviluppo (versione 2.3.0 e successive) della registrazione di Magical Record sembra che non funzioni ancora correttamente. Quando importato in questo modo: pod 'MagicalRecord',: git => 'https://github.com/magicalpanda/MagicalRecord',: branch => 'develop'

Non ho output di registrazione sulla mia console Xcode. Ma ho modificato lo script post_install del Cocoapod. Il seguente dovrebbe attivare la registrazione: https://gist.github.com/Blackjacx/e5f3d62d611ce435775e

Con questo buildsetting incluso nel GCC_PREPROCESSOR_DEFINITIONS registrazione di magico record può essere controllata in 2.3.0 ++ utilizzando [MagicalRecord Setlogginglevel:]

1

è possibile disattivare la registrazione nel progetto Pod !

Basta aggiungere preprocessore macro:

  1. basta andare in "pods" (!!!) del progetto.

  2. Quindi individuare la destinazione Pods-MagicalRecord.

  3. Scegliere "Build Impostazioni"

  4. Trova "Apple LLVM 6.1 Preprocessing" -> "Macro processore"

  5. rollout "Macro Processor" e aggiungere a "Debug" schema: "MR_ENABLE_ACTIVE_RECORD_LOGGING = 0 "

È tutto!

+0

Non appena si esegue 'pod update' questo smetterà di funzionare :( – deanWombourne

5

Ho aggiornato la risposta di ank per coloro che utilizzano la nuova versione cocoapods fianco MagicalRecord 2.3.0:

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 

Modifiche:

  • project rinominato pods_project
  • target Pods-MagicalRecord rinominato MagicalRecord
  • Macro MR_ENABLE_ACTIVE_RECORD_LOGGING ridenominata MR_LOGGING_DISABLED e il valore cambiato 0-1
Problemi correlati