iphone - cocoa touch framework
¿Cómo iterar un NSSet(Objective-C)-Representación de la relación To-Many en Core Data-de manera eficiente? (1)
Las relaciones To-Many en Core Data están representadas por NSSet (como se genera automáticamente usando el menú Editor ... Crear NSManagedObject Subclass ...
¿Cuál es la forma más eficiente de iterar un NSSet *?
NSSet* groups = [contact groups];
for(Group* group in groups) {
NSString* groupName = [group name];
}
o
NSSet* groups2 = [contact groups];
NSArray* groupsArray = [groups2 allObjects];
for(Group* group in groupsArray) {
NSString* groupName = [group name];
}
o de otra manera?
El primero es probablemente más eficiente. Si los últimos fueran más eficientes, Apple simplemente usaría esa ruta para implementar el primero.
Dicho esto, si lo preguntas porque el rendimiento parece ser un problema, es probable que debas dedicar mucho tiempo a la información de Core Data de objetos con fallas. Un movimiento inteligente sería realizar una búsqueda de self in %@
con groups
; establezca los returnsObjectsAsFaults
de returnsObjectsAsFaults
de returnsObjectsAsFaults
de solicitud de returnsObjectsAsFaults
en NO y asegúrese de que se especifiquen las relationshipKeyPathsForPrefetching
correctasPaseosParaPuntos de returnsObjectsAsFaults
. El efecto neto de esto será que todos los datos que está a punto de recorrer se recuperan en un solo viaje a la tienda de respaldo, en lugar de que cada parte individual de ellos se obtenga a pedido en un gran número de viajes separados.