2010-12-30 8 views
0

Ich versuche, Core Data in meiner Anwendung zu verwenden, und ich habe erfolgreich Daten in der Entität gespeichert.Die Datenspeicherung erfolgt in der applicationDidFinishLaunchingWithOptions() -Methode.Aber wenn ich die App erneut ausführen, es wird wieder gespeichert.So wie überprüfe ich, ob die Daten schon vorhanden sind oder nicht ?? HierKerndatenspeicherung wird wiederholt

ist der Code (Speichern):

NSManagedObjectContext *context = [self managedObjectContext]; 
NSManagedObject *failedBankInfo = [NSEntityDescription 
    insertNewObjectForEntityForName:@"FailedBankInfo" 
    inManagedObjectContext:context]; 
[failedBankInfo setValue:@"Test Bank" forKey:@"name"]; 
[failedBankInfo setValue:@"Testville" forKey:@"city"]; 
[failedBankInfo setValue:@"Testland" forKey:@"state"]; 

NSError *error; 
if (![context save:&error]) { 
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
} 

(Retrieving):- 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription 
    entityForName:@"FailedBankInfo" inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; 
for (NSManagedObject *info in fetchedObjects) { 
    NSLog(@"Name: %@", [info valueForKey:@"name"]); 
} 

` Eine andere Sache, ich will wissen, dass, wenn ich Tausende von Datensätzen haben zu speichern, dann ist es eine andere Möglichkeit, es zu tun oder kann es sein, nur durch Codierung gemacht ???

Dank

Antwort

0
  1. von dem, was ich verstehe Sie nur einmal eine Zeit, um alle Daten hinzufügen?

wenn ja, das Einfügen der Methode persistentStoreCoordinator bewegen, und prüfen Sie, ob dies das erste Mal Mittagessen die App, indem geprüft wird:

if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path] isDirectory:NULL]) { 
     firstRun = YES;  
    } 

wenn es dann die Daten geladen wird. wenn nicht, nichts tun. dies ist, wie es am Ende aussehen suchen:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator { 

    if (persistentStoreCoordinator_ != nil) { 
     return persistentStoreCoordinator_; 
    } 

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"your_app.sqlite"]; 

    BOOL firstRun = NO; 
    if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path] isDirectory:NULL]) { 
     firstRun = YES;  
    } 

    NSError *error = nil; 
    persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
    if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    }  
    if (firstRun) { 

     NSManagedObject *failedBankInfo = [NSEntityDescription 
      insertNewObjectForEntityForName:@"FailedBankInfo" 
      inManagedObjectContext:context]; 
      [failedBankInfo setValue:@"Test Bank" forKey:@"name"]; 
     [failedBankInfo setValue:@"Testville" forKey:@"city"]; 
     [failedBankInfo setValue:@"Testland" forKey:@"state"]; 

     NSError *error; 
     [moc save:&error]; 

    } 
    return persistentStoreCoordinator_; 
} 
  1. A.The Art, wie ich das tue, ist eine plist mit allen Daten zu erstellen. ... b.import der plist als Array von Wörterbüchern (jedes Wörterbuch ist eine Einheit“ c gesetzt eine Funktion, die iteriert das Array werfen und fügt die Einheiten auf den Kontext

so ähnlich:

NSString *thePath = [[NSBundle mainBundle] pathForResource:@"recordsList" ofType:@"plist"]; 
    NSArray *recordsArray = [[NSArray alloc] initWithContentsOfFile:thePath]; 



    for (int i=0;i<[recordsArray count];i++) 
    { 
     //add the objects to the context 
    } 

}

ich habe versucht, die Antwort zu vereinfachen, aber Sie sollten eine Menge von Dingen wissen, dass es sind, können Sie den Prozess besser.

gehen od Glück

+0

Danke! Es hat wirklich funktioniert .. – Kamlesh

Verwandte Themen