He creado un acceso directo en mi iPad que toma una imagen como entrada, obtiene un montón de información sobre ella y, a continuación, muestra esa información en una acción "Mostrar resultado". Sigo recibiendo un mensaje que dice "KCLErrorDomain error 2". ¿Qué significa y qué puedo hacer al respecto?
Respuestas
¿Demasiados anuncios?No sé cómo solucionar tu problema, pero he visto errores similares antes al desarrollar aplicaciones basadas en la localización.
Has dicho que estás viendo un error "kCLErrorDomain error 2". Se trata de un CoreLocation error de marco. Más concretamente, estás viendo el "error 2". Los códigos de error para kCLErrorDomain
puede verse en el CLError.h
del framework:
typedef NS_ENUM(NSInteger, CLError) {
kCLErrorLocationUnknown = 0, // location is currently unknown, but CL will keep trying
kCLErrorDenied, // Access to location or ranging has been denied by the user
kCLErrorNetwork, // general, network-related error
kCLErrorHeadingFailure, // heading could not be determined
kCLErrorRegionMonitoringDenied, // Location region monitoring has been denied by the user
kCLErrorRegionMonitoringFailure, // A registered region cannot be monitored
kCLErrorRegionMonitoringSetupDelayed, // CL could not immediately initialize region monitoring
kCLErrorRegionMonitoringResponseDelayed, // While events for this fence will be delivered, delivery will not occur immediately
kCLErrorGeocodeFoundNoResult, // A geocode request yielded no result
kCLErrorGeocodeFoundPartialResult, // A geocode request yielded a partial result
kCLErrorGeocodeCanceled, // A geocode request was cancelled
kCLErrorDeferredFailed, // Deferred mode failed
kCLErrorDeferredNotUpdatingLocation, // Deferred mode failed because location updates disabled or paused
kCLErrorDeferredAccuracyTooLow, // Deferred mode not supported for the requested accuracy
kCLErrorDeferredDistanceFiltered, // Deferred mode does not support distance filters
kCLErrorDeferredCanceled, // Deferred mode request canceled a previous request
kCLErrorRangingUnavailable, // Ranging cannot be performed
kCLErrorRangingFailure, // General ranging failure
kCLErrorPromptDeclined, // Authorization request not presented to user
};
Si no estás familiarizado con el código anterior, es bastante sencillo: kCLErrorLocationUnknown
se asigna a 0 y los errores por debajo se incrementan en 1. Usted está viendo un código de error de 2, que se asigna a kCLErrorNetwork
. El comentario asociado dice que se trata de un "error general relacionado con la red". Aunque esto es mejor que un error desconocido, lamentablemente no es lo suficientemente específico como para conocer la causa root.
Por tu captura de pantalla parece que tienes buen wifi pero podría valer la pena comprobar tu red.
Más allá de eso, no estoy seguro. Me imagino que obtener información de ubicación de la entrada probablemente extrae las coordenadas de los metadatos de la imagen y luego utiliza el CLGecoder
para obtener el topónimo. El sitio documentación para CLGeocoder
sugiere que podría limitar el número de solicitudes por minuto ("... en una situación típica, no debería enviar más de una solicitud de geocodificación por minuto"). La otra respuesta de @F-erry evita esto construyendo en su lugar una URL para obtener la ubicación a partir de las coordenadas.
Pero en resumen, ese error sugiere un error general de la red. Comprueba tu red y prueba el atajo en diferentes redes y dispositivos.
Tengo un problema similar y en reddit He encontrado a otra persona con un problema similar y sin solución.
El error KCLErrorDomain podría ser provocado por una API de localización de Apple. En este punto estoy adivinando, pero es una conclusión que saco basándome en un pregunta Lo he visto en stackoverflow. Donde alguien está escribiendo código Swift y obtiene el error KCLErrorDomain. Las respuestas a esa pregunta en particular sugiere un error de red o API de aceleración.
En mi acceso directo puedo excluir el error de red o el estrangulamiento api.
Eso deja otra causa con la API de localización todavía en su lugar. Así que experimenté un poco más y me di cuenta de que la información de ubicación de una imagen o un vídeo es diferente de otra información de ubicación, por ejemplo, la información de ubicación que se puede obtener del servicio meteorológico.
Como tal, este KCLErrorDomain podría ser un error en Shortcuts porque la información de ubicación no puede ser procesada correctamente por la API y esto es algo que sólo apple puede solucionar.
para futuras referencias: Actualmente estoy en ios 15.6
He encontrado una solución
No es muy rápido, pero funciona. No pude hacerlo funcionar sin el paso Obtener distancia aunque este paso parece inútil para el resultado deseado.