Pregunta

¿Hay una directiva de compilación que puedo utilizar para compilar una línea diferente de código cuando el simulador que apuntan a diferencia de mi dispositivo. Algo así como:

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

editar

enlace directo al docs.

¿Fue útil?

Solución

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

Otros consejos

Actualización: (Deprecated / obsoleto) Esto sólo trabajó durante unos años, y no funciona más. (10 años después)

Para el registro, aquí hay otro método que Apple utiliza en algunos de sus oficiales Código de ejemplo:

#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

Para aquellos que buscan una solución rápida moderna, el (nuevo) Condición de la plataforma targetEnvironment proporciona la respuesta definitiva aquí. Por ejemplo:

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

La condición objetivo plataforma ambiente característica se introdujo por sE-0190 y está disponible desde Swift 4.1 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top