por la Guía de Programación de Datos Básicos:datos básicos - Los atributos opcionales y el rendimiento
Puede especificar que un atributo es opcional, es decir, no es necesario tener un valor. En general, sin embargo, no se recomienda hacer , especialmente para los valores numéricos (normalmente puede obtener mejores resultados usando un atributo obligatorio con un valor predeterminado -en el modelo- de 0). El motivo es que SQL tiene comportamiento de comparación especial para NULL que es diferente de Objective-C's nil. NULL en una base de datos no es lo mismo que 0, y las búsquedas de 0 no coincidirán con columnas con NULL.
Siempre he hecho valores numéricos no opcionales, pero no para fechas y cadenas. En mi código es conveniente basar la lógica en fechas y/o cadenas que son nulas.
Basado en las recomendaciones anteriores, estoy considerando hacer que todo en mi base de datos no sea opcional. Para las fechas, pude establecer el valor predeterminado del modelo en un valor de 0 y para cadenas un valor predeterminado de modelo de nada (""). Entonces, en mi código podría probar fechas para [date timeIntervalSince1970]! = 0 y cadenas para string.length! = 0.
La pregunta es, para una base de datos relativamente pequeña, esto realmente importa a partir de un rendimiento de Core Data ¿punto de vista? ¿Y cuál es la compensación si el atributo en cuestión nunca se consultará directamente a través de un predicado?
Muchas gracias Marcus! Esperaba que tú fueras el que respondiera esto. Venir de un ninja Core Data certificado me da la confianza para dejar este tema atrás. – thevoid
Si Marcus fuera realmente un ninja de Core Data, nunca lo veríamos ... a menos que eso sea lo que él quiere que pensemos. Ninja son diablos difíciles. – TechZen