2012-03-28 6 views
0

Ich lerne nur Kerndaten und meist bewältige ich, aber ich habe ein bisschen Mühe, darüber nachzudenken, wie ich es umsetzen werde.Wie verwende ich Core Data zwischen Klassen?

Ich möchte auf die gleichen Kerndaten aus meiner gesamten App zugreifen. Was wäre der beste Weg, um von mehreren Klassen darauf zuzugreifen? Wäre es empfehlenswert, sie als globale Variable zu haben (normalerweise nicht in objektorientierter Programmierung empfohlen) oder sie als Instanzvariable zwischen Klassen zu übergeben?

Antwort

5

Kerndatenmodell wird in Ihrer App verfügbar sein. Sie können problemlos auf das verwaltete Objekt über Ihre App zugreifen. Sie müssen nur eine Instanz der Klasse AppDelegate erstellen.

Sagen Sie zum Beispiel, dass Sie Kontakte gespeichert haben. Sie können einfach [managedObject valueForKey:@"name"] in einem der View-Controller verwenden.

1. eine Instanz der

AppDelegate erstellen
self.theappDel=[[UIApplication sharedApplication] delegate]; 

2. den Kontext holen Abrufanforderung und Entity-Beschreibung.

NSManagedObjectContext*context=[self.theappDel managedObjectContext]; 
NSEntityDescription*entity=[NSEntityDescription entityForName:@"Contacts" inManagedObjectContext:context]; 
NSFetchRequest*request=[[NSFetchRequest alloc] init]; 
[request setEntity:entity]; 
NSManagedObject*managedObject=nil; 
NSError*error=nil; 
NSArray*objectList=[context executeFetchRequest:request error:&error]; 

3. das verwaltete Objekt aus dem Array holen.

if([objectList count]>0) 
managedObject=[objectList objectAtIndex:0]; 
NSLog(@"The name: %@",[managedObject valueForKey:@"name"]) 

4. das ein singleton (oder jede geeignete Methode) Muster in anderen Ansicht-Controller, dass Sie es mit Namen Objekt übergeben, benötigen.

1

Übergeben Sie die NSManagedObjectContext Instanz, oder wenn Sie nur ein Objekt die NSManagedObject Instanz behandeln müssen, an die nächste Klasse.

Wie es in Xcodes Core Data Vorlagen getan wird.

1

Werfen Sie einen Blick auf die MagicalRecord Bibliothek. Es macht nicht nur viele allgemeine Abrufanforderungen viel prägnanter, es erleichtert auch den Zugriff auf den Kontext Ihres verwalteten Objekts, indem einfach [NSManagedObjectContext defaultContext];

verwendet wird