framework iphone objective-c ios cocoa operating-system

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.