Frage

Gibt es eine Compiler-Direktive ich verwenden kann, eine andere Zeile Code zu kompilieren, wenn der Simulator Targeting als mein Gerät gegenüber. So etwas wie:

# IF SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
# ELSE
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
# END

EDIT

Direkt-Link zu docs.

War es hilfreich?

Lösung

#if TARGET_IPHONE_SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#else
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#endif

Andere Tipps

Update: (Veraltete / Obsolete) Dies ist nur für ein paar Jahre gearbeitet, und funktioniert nicht mehr. (10+ Jahre später)

Für die Aufzeichnung ist hier eine andere Methode, die Apple in einigen ihrer offiziellen Beispielcode verwendet:

#if TARGET_CPU_ARM
  // Only executes on an iPhone or iPod touch device
  [self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#else
  // Only executes on the Simulator
  [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#endif

Für diejenigen, für eine moderne Swift Lösung suchen, die (neue) -Plattform Bedingung targetEnvironment bietet die definitive Antwort hier. Zum Beispiel:

#if targetEnvironment(simulator)
self.imagePicker.sourceType = .photoLibrary
#else
self.imagePicker.sourceType = .camera
#endif 

Die Zielumgebung Plattform Bedingung Feature wurde von SE-0190 und ist seit Swift 4.1 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top