2012-03-26 9 views
0

Ich möchte Daten in Kerndaten speichern.Ich möchte gut über "Core Data" (iPhone)

Aber die gespeicherten Daten sind die einzigen letzten Daten.

Ich denke, Wichtiges Problem ist das einzige! nur! letzte Daten gespeichert.

Eigentlich weiß ich nicht sehr gut Englisch ...

Bitte Ich möchte Ihnen meine Frage verstehen ..

dies mein Code.

Wie ich diesen Code erkläre. Dieses Projekt hat ein Beispiel. csv, so dass ich diese Datei trennen. Und getrennte Daten werden mit "setvalue" gespeichert.

Was ist das Problem?

NSString *path = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"csv"]; 
    NSString *strText = [NSString stringWithContentsOfFile:path encoding:NSEUCKREncoding error:nil]; 

    NSArray * array = [strText componentsSeparatedByString:@"\n"]; 

    NSString *tempText; 
    int i = 0; 
    NSArray * temparray; 

    AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; 
    NSManagedObjectContext *newContext = [appDelegate managedObjectContext]; 
    NSManagedObject *newContact; 
    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:newContext]; 


    NSError *error; 
    for(i = 1;i<[array count]-1;i++){ 
     tempText = [[array objectAtIndex:i]description]; 

     temparray = [tempText componentsSeparatedByString:@"##"]; 

     [newContact setValue:[temparray objectAtIndex:0] forKey:@"name"]; 
     [newContact setValue:[temparray objectAtIndex:1] forKey:@"phone"]; 
     [newContact setValue:[temparray objectAtIndex:2] forKey:@"sex"]; 

     [newContext save:&error]; 
    } 
+0

sind Sie bewusst das erste Objekt in Ihrem Array Skipping? Sie starten Ihre Schleife mit Index 1, aber das erste Objekt in einem Array hat einen Index von 0. –

+0

Ja, absichtlich .. Ich löste das. :-) –

+0

okay. sollte gelesen haben, dass Sie einen CSV analysieren. also ist es wahrscheinlich der Tabellenkopf. –

Antwort

1

Ich denke, sollten Sie dies setzen:

NSManagedObject *newContact; 
newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:newContext]; 

in die erste Zeile der for-Schleife

+0

und wenn Sie dies getan haben, denken Sie daran, '[newContext save: & error];' außerhalb der for-Schleife zu setzen. –

+0

Danke :-) Ich bin so glücklich! –

0

Sie haben einen neuen Kontakt für jede TempArray einzufügen. Also müssen Sie die newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:newContext]; in die für verschieben.

+0

Danke !!! Ich habe das gelöst! wegen Diziet ... –

1

Sie erstellen die neue Entität außerhalb Ihrer Schleife, sodass Sie nur eine neue Entität erstellen. Verschieben Sie dieses Bit an die Spitze der for-Schleife:

newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:newContext]; 

Like:

for(i = 1;i<[array count]-1;i++){ 
    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:newContext]; 
    tempText = [[array objectAtIndex:i]description]; 

    temparray = [tempText componentsSeparatedByString:@"##"]; 

    [newContact setValue:[temparray objectAtIndex:0] forKey:@"name"]; 
    [newContact setValue:[temparray objectAtIndex:1] forKey:@"phone"]; 
    [newContact setValue:[temparray objectAtIndex:2] forKey:@"sex"]; 

    [newContext save:&error]; 
} 
+0

T^T <- das ist beeindruckende Emoticon .. Sie sind sehr sehr Genie. Vielen Dank!!!!!!!!!! –