2010-10-03 33 views
1

Je travaille sur un programme et j'ai créé une requête d'extraction pour récupérer les données dont j'ai besoin d'imprimer. Je suis en mesure d'enregistrer des informations comme ceci:Impression de données de base

2010-10-03 16:57:10.362 lzshow7.2[2537:10b] <NSManagedObject: 0x2ca120> (entity: Song; id: 0x2afcb0 <x-coredata://CF5A85CE-BE0F-4ADC-979A-7F4214A8FB19/Song/p9> ; data: { 
    cueName = Freedom; 
    cueNo = 014; 
    cueNotes = nil; 
    songToInstrument = "<relationship fault: 0x2b1800 'songToInstrument'>"; 
}) 

Comment puis-je séparer les propriétés comme cueName, Cueno, cueNotes sur à imprimer?

Voici la requête d'extraction:

//Managed object context??? 
NSLog(@"setting Managed object stuff"); 
NSManagedObjectContext *context=[[[NSDocumentController sharedDocumentController] currentDocument] managedObjectContext]; 
NSLog(@"Second line of Managed object stuff"); 






//fetch request: 
NSLog(@"Starting to fetch:"); 

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Song" inManagedObjectContext:context]; 
[request setEntity:entity]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"cueNo" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
[request setSortDescriptors:sortDescriptors]; 
[sortDescriptors release]; 
[sortDescriptor release]; 
NSError *error; 
NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy]; 



for (id obj in mutableFetchResults) 
    NSLog(@"%@", obj); 

NSLog(@"finished looping"); 
//Error handling 

if (mutableFetchResults == nil) { 

    // Handle the error. 

} 

//[self setEventsArray:mutableFetchResults]; 
[mutableFetchResults release]; 
[request release]; 


} 

Toute aide serait grandement appréciée.

Merci,

Loren

Répondre

0

Vous utilisez essentiellement à l'opposé de la façon dont vous avez enregistré les valeurs dans votre ManagedObject

NSString *name = [song valueForKey:@"cueName"]; 
NSNumber *number = [song valueForKey:@"cueNo"]; 
NSString *notes = [song valueForKey:@"cueNotes"]; 
... 
NSLog(@"%@ %@ %@", name, number, notes); 

si vous avez créé une classe personnalisée de votre entité, vous pouvez ajouter cette méthode:

- (NSString *)description { 
    NSString *name = [song valueForKey:@"cueName"]; 
    NSNumber *number = [song valueForKey:@"cueNo"]; 
    NSString *notes = [song valueForKey:@"cueNotes"]; 
    ... 
    NSString *returnString = [NSString stringWithFormat:@"%@ %@ %@", name, number, notes]; 
    return returnString; 
} 

Avec cette méthode, vous pouvez simplement utiliser NSLog(@"%@", object); pour obtenir une sortie formatée agréable

+0

J'ai effectivement utilisé: NSString * name = [object valueForKey: @ "cueName"]; mais l'idée était juste le billet! Merci beaucoup –

+0

Mais Apple ne décourage-t-il pas de surcharger la méthode '-description'? http://stackoverflow.com/a/2170679/294661 –