tutorial persistencia objective example español datos data core-data xcode9-beta

core-data - persistencia - swift, base de datos,



iOS: No se puede compilar el modelo CoreData debido a Índices extraídos en Xcode 9 (3)

Esto se soluciona en Xcode 9 beta 2, según las notas de la versión :

El editor de modelos de datos de Xcode admite la creación de índices de búsqueda a partir de atributos, expresiones y relaciones. (32407895)

De acuerdo con las notas de la versión, Xcode 9 agrega soporte para los índices obtenidos:

El editor de modelos de datos presenta una interfaz unificada para los nuevos índices de búsqueda de Core Data, así como su índice de propiedad existente y características de índice compuesto de entidades. Los modelos de datos antiguos se traducen al formato de índice de búsqueda para su edición y se guardan en el formato de archivo anterior cuando sea necesario. Compilar un modelo de datos con un destino de implementación inferior a iOS 11, watchOS 4, macOS 10.13 o TVOS 11 sigue generando un formulario compilado compatible. (30843153) "

Mi proyecto tiene un objetivo de implementación configurado para iOS 9 en este momento, pero aún no puedo compilar mi modelo CoreData, me da los siguientes errores para cada entidad que tiene un conjunto compuesto de índices:

Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[0]: error: Expression requires a concrete result type. Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[0]: error: Expression attributes are not compatible with the current deployment target. Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[1]: error: Expression requires a concrete result type. Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[1]: error: Expression attributes are not compatible with the current deployment target. Model.xcdatamodeld/Model.xcdatamodel:MyEntity: error: Fetch Indexes feature requires iOS deployment target 11.0 or later Model.xcdatamodeld/Model.xcdatamodel:MyEntity: error: Fetch Indexes feature requires Xcode 9.0 tools or later

¿Alguna idea de cómo solucionar el error de compilación?

ACTUALIZAR :

Xcode 9 convierte correctamente los índices compuestos en índices de recuperación para todos los casos, excepto los creados a partir de las relaciones, como se indica en la sección "Problemas conocidos":

El editor de modelo de datos solo es compatible con la creación de índices de búsqueda de atributos y expresiones en esta versión beta, no de relaciones. (32407895)

Los índices de recuperación afectados se ven así y los únicos atributos se pueden seleccionar desde el menú desplegable:

Sin embargo, no hay una solución alternativa descrita en el documento.


He archivado un error con Apple, ya que no parece haber una buena solución. Por ahora, he cambiado la "Versión de Herramientas" de Automático / Xcode 9 a Xcode 8. Eso solucionó mi problema hasta que se solucionó el error.

También es posible que algunos Modelos simplemente no sean compatibles con los nuevos índices. En mi caso, se trataba de modelos subclase (es decir, de clases abstractas) que tenían relaciones con otros tipos. Por ejemplo:

PIFolder | |-----PIFolderProject -> index: defaultItem (task relationship) |-----PIFolderNotebook-> index: defaultItem (note relationship)


Acabo de toparme con este problema en el Xcode 9 GM. Lo que observé fue que desmarcar la casilla de verificación Ascending en el editor de índice causó que este error ocurriera (solo aparecía después de que hice un nuevo índice). Supongo que el ajuste de este atributo de índice solo se admite en los índices de recuperación de iOS 11 (notará que cualquier índice que haya hecho antes de Xcode 9 se enumera como ascendente de manera predeterminada).

TL; DR : asegúrese de que la casilla de verificación Ascending esté marcada para todas las propiedades en el editor de índice de búsqueda.