tutorial existing espaƱol data ios core-data nsfetchrequest

ios - existing - core data vs sqlite



CoreData obtiene valores distintos de Atributo (3)

Debe usar la tienda de respaldo para ayudarlo a obtener registros distintos.

Si quieres obtener una matriz con solo John, Betty, Edward, así es como lo haces:

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:self.managedObjectContext]; // Required! Unless you set the resultType to NSDictionaryResultType, distinct can''t work. // All objects in the backing store are implicitly distinct, but two dictionaries can be duplicates. // Since you only want distinct names, only ask for the ''name'' property. fetchRequest.resultType = NSDictionaryResultType; fetchRequest.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"name"]]; fetchRequest.returnsDistinctResults = YES; // Now it should yield an NSArray of distinct values in dictionaries. NSArray *dictionaries = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; NSLog (@"names: %@",dictionaries);

Estoy tratando de configurar mi NSFetchRequest en los datos centrales para recuperar los valores únicos para un atributo específico en una entidad. es decir

una entidad con la siguiente información:

name | rate | factor | _______|______|________| John | 3.2 | 4 | Betty | 5.5 | 7 | Betty | 2.1 | 2 | Betty | 3.1 | 2 | Edward | 4.5 | 5 | John | 2.3 | 4 |

¿Cómo puedo configurar la solicitud para devolver una matriz con solo: John, Betty, Edward?



Está tratando de usar los datos centrales como una base de datos de procedimientos en lugar de como un gestor de gráficos de objeto como lo pretendía la API, por lo que no encontrará una manera fácil de hacerlo.

No hay una forma directa de hacerlo en Core Data porque Core Data se ocupa de objetos en lugar de valores. Dado que se garantiza que los objetos administrados serán únicos, a Core Data no le importan demasiado los valores de cada objeto ni si son duplicados o los valores de otros objetos.

Para encontrar los valores únicos:

  1. Realice una búsqueda por valor específico . Eso le dará una variedad de diccionarios con un name clave y un valor del nombre de la cadena en sí.
  2. En la matriz devuelta en (1) utilice un operador de recopilación de conjuntos para devolver un conjunto de valores únicos.

Entonces, algo como:

NSSet *uniqueNames=[fetchedNameDicts valueForKeyPath:@"@distinctUnionOfSets.name"];

... que devolverá un conjunto de objetos NSString, todos con un valor único.