A obtenção de valores armazenados NSSet que foi fretched de dados principais, como para-muitos

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

  •  21-12-2019
  •  | 
  •  

Pergunta

Eu sou realmente novo para o iPhone programação e têm criar com êxito um aplicativo, mas eu não consigo descobrir como obter os valores armazenados em NSSet.Eu tenho 2 entidades no núcleo dados relacionados uns com os outros.Os usuários de um-para-muitos para Pontuação.Utilizadores entidade tem firsNname e atributos de apelido e Pontuações entidade tem onTime, wasAbsent, e dateIn atributos.Eu buscar usando o predicado com base no nome e apelido e, em seguida, executar a busca.A busca é sucesso e eu sou capaz de conseguir as duas entidades em uma busca de chamada.No entanto, eu não é possível obter valores para os valores de Escores entidade.O que quer que eu faça, ele sempre retorna NSSet objeto.O que eu quero fazer é recuperar o valor booleano que foi armazenado na onTime e wasAbsent atributos e alimentá-los para UISwitch.

AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
self.managedObject = delegate.managedObjectContext;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Student"];
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"firstname == %@ AND lastname == %@", @"James", @"Smith"];

NSError *error = nil;
self.scoresArray = [self.managedObject executeFetchRequest:fetchRequest error:&error];

if ([self.scoresArray count]) {

    Student *student = [self.scoresArray objectAtIndex:0];
    NSSet *score = student.scores;
    NSArray *arr = [score allObjects];
    NSLog(@"%@", [arr objectAtIndex:0]);
}

se eu pode acessar diretamente a Pontuação entidade em vez de usar NSSet, que seria o ideal de que forma eu posso referência a ele usando uma notação de ponto.Qualquer ajuda seria apreciada.Obrigado

Foi útil?

Solução

Usar algo como o seguinte:

AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
self.managedObjectContext = delegate.managedObjectContext;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Student"];
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"firstname == %@ AND lastname == %@", @"James", @"Smith"];

NSError *error = nil;
NSArray *studentArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

for (Student *student in studentArray) {

    Student *student = [self.studentArray objectAtIndex:0];

    NSLog(@" student is %@ %@", student.firstname, student.lastname);

    for (Score *score in student.scores) {
       // Do something with score
      NSLog(@"   score is %@", score);
    }
}

Outras dicas

Porque o Aluno tem para-muitos em relação aos Escores (e a propriedade é scores), quando obtém o valor de student.scores, ele retorna uma coleção desordenada, que é NSSet na Fundação.Então você acabou de trabalhar com ele como trabalhar com NSSet e com coleções em geral.

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