2009-08-03 11 views
2

Mit dem untenstehenden Code erstelle ich eine Abrufanforderung. Das Problem, das ich habe, ist, die Abrufanforderungsdaten zu bekommen und etwas damit zu tun, wie es in eine Variable zu schreiben (wie ich es im Folgenden mit der erstenManagedObject-Variable versuche). Das heißt, ich verstehe nicht, was ich mit meinem "result" NSArray machen soll, das ich erstellt habe (siehe unten stehenden Code), um brauchbare Daten zu erhalten, die nicht in Form von "(entity: Question; id: 0x10b6250 < - coredata: // 90FA9FD7-4CFC-4039-8A0C-40116055CADF/Frage/p2; Daten: Fehler) "oder ähnlich. In dem NSLog, den ich erstelle (in der letzten Zeile) logge ich das "result" NSArray, gefüllt von einer executeFetchRequest (fett dargestellt), aber ich weiß nicht, wie ich den nächsten Schritt machen soll, um den eigentlichen "Question" -Text zu erhalten. Jede Hilfe wird geschätzt. Vielen Dank.Kerndaten holen Ergebnisse

NSLog Ergebnisse:

Anfrage getQuestionsByParent fetch: 2 gefunden (sub Variablen: { formid = "9822217D-6A55-4475-88EC-E2552B336E1B"; sectionNumber = 2; }, Ergebnisse :( (Entität: Frage; ID: 0x10a8720 x-coredata: // 90FA9FD7-4CFC-4039-8A0C-40116055CADF/Frage/p2; Daten: Fehler), (Entität: Frage; ID: 0x1092920 x-coredata: // 90FA9FD7- 4CFC-4039-8A0C-40116055CADF/Frage/p4; Daten: Fehler) ))

Code:

NSManagedObjectContext *moc_ = [self managedObjectContext]; 

    NSMutableDictionary *dictionary=[[NSMutableDictionary alloc]init]; 
    [dictionary setObject:section.ordinal forKey:@"sectionNumber"]; 
    [dictionary setObject:section.parent.id forKey:@"formId"]; 

    NSError *error = nil;  
    NSManagedObjectModel *model = [[moc_ persistentStoreCoordinator] managedObjectModel]; 
    NSFetchRequest *fetchRequest = [model fetchRequestFromTemplateWithName:@"getQuestionsByParent" substitutionVariables:dictionary]; 
    NSAssert(fetchRequest, @"Can't find question fetch request"); 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"ordinal" ascending:YES]; 
    NSArray *sortDescriptors = [[NSMutableArray alloc] initWithObjects:sortDescriptor, nil]; 
    [fetchRequest setSortDescriptors:sortDescriptors]; 

    NSArray *result = [[NSArray alloc] init]; 
    result = [moc_ executeFetchRequest:fetchRequest error:&error]; 
    //return result; 

    NSLog(@"fetch request getQuestionsByParent: %u found (sub variables:%@, results:%@)", [result count], dictionary, result); 

    NSManagedObject *firstManagedObject = [result objectAtIndex:0]; 

Antwort

3

Sie haben Ihren Fetch nach unten, Sie haben die Daten. Wenn Sie benutzerdefinierte Unterklassen für das Objekt implementiert haben, können Sie einfach die Eigenschaften abfragen. Andernfalls können Sie KVC verwenden, um auf die Objekte zuzugreifen. So zum Beispiel, vorausgesetzt, Sie haben ein Attribut namens „MyAttribute“ dann:

NSManagedObject *firstManagedObject = [result objectAtIndex:0]; 
NSLog(@"firstObject.myAttribute: %@", [firstObject valueForKey:@"myAttribute"]); 

Und wenn Sie eine benutzerdefinierte Unterklasse für das Objekt (Frage) aufweisen, die erklären, die Attribute wie dynamische Eigenschaften dann wäre es:

Question *firstQuestion = [result objectAtIndex:0]; 
NSLog(@"firstQuestion.myAttribute: %@", firstQuestion.myAttribute); 
Verwandte Themen