Swift - Verificando a propriedade de valor único do catálogo de endereços não gerenciado por zero

Sou relativamente novo no iOS-Development e rápido. Mas, até esse ponto, sempre fui capaz de me ajudar com algumas pesquisas sobre o stackoverflow e várias documentações e tutoriais. No entanto, há um problema que ainda não encontrei solução.

Desejo obter alguns dados do catálogo de endereços dos usuários (por exemplo, a propriedade de valor únicokABPersonFirstNameProperty) Porque o.takeRetainedValue() A função gera um erro se este contato não tiver um valor firstName no catálogo de endereços, preciso garantir que oABRecordCopyValue() A função retorna um valor. Eu tentei verificar isso em um fechamento:

let contactFirstName: String = {
   if (ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty) != nil) {
      return ABRecordCopyValue(self.contactReference, kABPersonFirstNameProperty).takeRetainedValue() as String
   } else {
      return ""
   }
}()

contactReference é uma variável do tipoABRecordRef!

Quando um contato do catálogo de endereços fornece um valor firstName, tudo funciona bem. Mas se não houver firstName, o aplicativo trava pelo.takeRetainedValue() função. Parece que a instrução if não ajuda porque o valor de retorno não gerenciado doABRecordCopyValue() A função não é nula, embora não haja nome próprio.

Espero ter conseguido esclarecer meu problema. Seria ótimo se alguém pudesse me ajudar com algumas ondas cerebrais.

questionAnswers(3)

yourAnswerToTheQuestion