Obtener el valor mínimo de un atributo en un NSSet hecho a partir de una relación de uno a muchos en los datos básicos

StackOverflow https://stackoverflow.com/questions/1627447

  •  06-07-2019
  •  | 
  •  

Pregunta

Tengo varios objetos configurados en Core Data, uno de los cuales es " Deck " y uno de los cuales es "Tarjeta". " Tarjetas " tener varias relaciones numeradas, incluyendo "id". " Cubierta " tiene una relación de uno a muchos con las tarjetas.

¿Cuál es la mejor manera de encontrar la Tarjeta en un Mazo que tiene el valor mínimo para algún atributo numerado, como id?

Claramente puedo obtener la lista de tarjetas como esta:

NSSet *cardList = self.cards;

Creo que puedo construir una expresión para obtener un mínimo como este:

NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"id"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"min:" 
            arguments:[NSArray arrayWithObject:keyPathExpression]];

Pero no puedo entender cómo usar esa expresión para extraer la tarjeta con el valor mínimo de id (o solo el valor mínimo de id).

¿Fue útil?

Solución

Puede hacer esto usando la codificación de valor clave:

//assuming Card has an Id property which is a number
NSNumber *minId = [deck valueForKeyPath:@"cards.@min.Id"];

NSSet *minCards = [[deck cards] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"Id==%@", minId]];

dará el NSSet de las tarjetas cuya propiedad Id es igual al mínimo en deck.cards .

Consulte la descripción de la Guía de programación de valores clave de Establecer y configurar operadores para obtener más información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top