Domanda

C'è una direttiva del compilatore posso usare per compilare una diversa linea di codice quando il simulatore rivolte al contrario di mio dispositivo. Qualcosa di simile:

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

Modifica

.

È stato utile?

Soluzione

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

Altri suggerimenti

Aggiornamento: (deprecato / obsoleto) Questo ha funzionato solo per pochi anni, e non funziona più. (10 anni dopo)

Per la cronaca, ecco un altro metodo che Apple utilizza in alcuni dei loro codice di esempio ufficiale:

#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

Per chi cerca una soluzione rapida moderna, il (nuovo) Condizioni della piattaforma targetEnvironment fornisce la risposta definitiva qui. Per esempio:

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

Condizioni della piattaforma ambiente di destinazione caratteristica è stata introdotta da SE-0190 ed è disponibile dal Swift 4.1 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top