Question

Y at-il une directive de compilation que je peux utiliser pour compiler une autre ligne de code lorsque le simulateur ciblant par opposition à mon appareil. Quelque chose comme:

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

EDIT

lien direct vers docs.

Était-ce utile?

La solution

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

Autres conseils

Mise à jour: (Obsolète / Obsolète) Cela ne a travaillé pendant quelques années, et ne fonctionne plus. (10 ans plus tard)

Pour mémoire, voici une autre méthode Apple utilise dans certains de leurs fonctions officielles Exemple de code:

#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

Pour ceux qui recherchent une solution Swift moderne, le (nouveau) état de la plate-forme fournit la réponse targetEnvironment définitive ici. Par exemple:

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

état environnement plateforme cible fonctionnalité a été introduite par sE-0190 et est disponible depuis Swift 4.1 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top