Guadare i valori memorizzati da NSSET che è stato recuperato dai dati chiave per molti
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
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.