Guadare i valori memorizzati da NSSET che è stato recuperato dai dati chiave per molti

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

  •  21-12-2019
  •  | 
  •  

Domanda

Sono in realtà nuovo alla programmazione di iPhone e ho creato con successo un'app ma non riesco a capire come recuperare i valori memorizzati in NSET.Ho 2 entità nei dati principali relativi a vicenda.Utenti da uno a molti ai punteggi.L'entità degli utenti ha gli attributi e gli attributi di lastname e gli attributi del punteggio ha gli attributi ontime, wakabsent e datein.Mi prendo usando il predicato in base al nome e al cognome e quindi esegui il recupero.Il recupero ha successo e sono in grado di ottenere entrambe le entità in una chiamata di recupero.Tuttavia non riesco a ottenere valori per i valori dall'entità dei punteggi.Qualunque cosa io faccia, restituisce sempre l'oggetto NsSet.Quello che voglio fare è recuperare il valore booleano che è stato memorizzato in attime e attributi wakabsent e li nutrono a 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 posso accedere direttamente all'entità del punteggio invece di utilizzare NSSET, sarebbe l'ideale in questo modo posso farla fare riferimento utilizzando una notazione DOT. Qualsiasi aiuto sarebbe apprezzato.Grazie

È stato utile?

Soluzione

Usa qualcosa come il seguente:

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);
    }
}
.

Altri suggerimenti

Poiché lo studente ha molte relazioni con i punteggi (e la proprietà per questo è scores), quando ottieni il valore di student.scores, restituisce una raccolta non ordinata, che è NSET in Fondazione.Quindi lavori con questo come lavorare con Nsset e con collezioni in generale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top