Pergunta

Existe uma directiva de compilador que eu possa usar para compilar uma linha diferente de código quando targetting o simulador em oposição ao meu dispositivo. Algo como:

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

Editar

link direto para docs.

Foi útil?

Solução

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

Outras dicas

Update: (preterido / Obsoleto) Isso só funcionou por alguns anos, e não funciona mais. (10 + anos mais tarde)

Para o registro, aqui está um outro método que usos da Apple em alguns de seus Amostra oficial cupom:

#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 aqueles que procuram uma solução Swift moderno, o (novo) condição plataforma targetEnvironment fornece a resposta definitiva aqui. Por exemplo:

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

O condição de plataforma de ambiente de destino recurso foi introduzido por sE-0190 e está disponível desde Swift 4.1 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top