compilación condicional cuando se ejecuta en simulador en lugar de en un dispositivo
-
21-08-2019 - |
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
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