1
resposta

duvida na parte do (as?) nao entendi muito bem a função desse termo no codigo

no video o professor passou muito rápido nessa parte não consegui entender muiot bem, tem como algum instrutor ou aluno explicar melhor por aqui

1 resposta

Suponha o código onde tentamos converter de forma inocente um número para String:

let numero: Int = 10
let texto: String = numero as String

Veja que numero é do tipo Int, mas texto é do tipo String. Então para alterarmos o tipo do numero, fazemos uma operação chamada casting. No Swift, o operador de casting é o as.

No entanto, simplesmente trocar o tipo do numero (de Int para String) não o converte propriamente para uma String e essa operação dará um erro. O importante aqui é: caso o casting dê erro (por usarmos tipos incompatíveis), o que queremos que aconteça?

  • dê crash no sistema
  • devolva nulo

Caso queiramos forçar o casting e em caso de erro quebre o app, podemos fazer:

let numero: Int = 10
let texto: String = numero as! String

Usando o as! fazemos o force casting de numero para String, porém, como os tipos são incompatíveis, esse código causará um erro ao ser executado.

Podemos ser mais cautelosos e em caso de erro no casting podemos receber nulo:

let numero: Int = 10
let texto: String? = numero as? String

Note que ao usar o operador as? nos protegemos de um erro de tipagem incompatível, porém nosso texto agora é do tipo String?, significando que pode receber um valor nulo.