Obtendo o valor mínimo de um atributo em um NSSet Feito a partir de uma relação de um-para-muitos em Core Data

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu tenho vários objetos criadas em Core Data, um dos quais é "plataforma" e um dos quais é "Cartão". "cartões" têm vários relacionamentos numeradas, incluindo "id". "Plataforma" tem um relacionamento um-para-muitos com cartões.

Qual é a melhor maneira de encontrar o cartão em um deck que tem o valor mínimo para algum atributo numerada, como id?

É claro que eu posso obter a lista de cartões como este:

NSSet *cardList = self.cards;

Eu acho que eu posso construir uma expressão para obter um mínimo assim:

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

Mas eu não posso bastante Suss como usar essa expressão para extrair o cartão com o valor mínimo de id (ou apenas o valor mínimo de id).

Foi útil?

Solução

Você pode fazer isso usando Key-Value codificação:

//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á a NSSet de Cartões cuja propriedade Id é igual ao mínimo deck.cards.

Veja o valor-chave de programação Descrição do Guia de Definir e de matriz Operadores para mais informações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top