Swift: comprobación de la propiedad de valor único de la libreta de direcciones no administrada para nulo

Soy relativamente nuevo en iOS-Development y rápido. Pero hasta este punto siempre pude ayudarme a mí mismo investigando un poco sobre stackoverflow y varias documentaciones y tutoriales. Sin embargo, hay un problema que no pude encontrar ninguna solución todavía.

Deseo obtener algunos datos de la libreta de direcciones de los usuarios (por ejemplo, la propiedad de valor únicokABPersonFirstNameProperty) Porque el.takeRetainedValue() la función arroja un error si este contacto no tiene un valor de nombre en la libreta de direcciones, debo asegurarme de queABRecordCopyValue() La función devuelve un valor. Traté de verificar esto en un cierre:

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

contactReference es una variable de tipoABRecordRef!

Cuando un contacto de la libreta de direcciones proporciona un valor de nombre, todo funciona bien. Pero si no hay un nombre, la aplicación se bloquea.takeRetainedValue() función. Parece que la instrucción if no ayuda porque el valor de retorno no administrado deABRecordCopyValue() la función no es nula aunque no hay firstName.

Espero haber podido aclarar mi problema. Sería genial si alguien pudiera ayudarme con una onda cerebral.

Respuestas a la pregunta(3)

Su respuesta a la pregunta