Я хочу хорошо работать с "Core Data" (iPhone) - PullRequest
0 голосов
/ 26 марта 2012

Я хочу сохранить данные в основных данных.

Но сохраненные данные - это единственные последние данные.

Я думаю, важная проблема - единственная!только!сохранены последние данные.

На самом деле я не очень хорошо знаю английский ...

Пожалуйста, я хочу, чтобы вы поняли мой вопрос ..

этомой код

Как я объясняю этот код.В этом проекте есть образец. csv , поэтому я разделяю этот файл.И разделенные данные сохраняются "setvalue".

В чем проблема ??

 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];
    }

Ответы [ 3 ]

1 голос
/ 26 марта 2012

Вы создаете новую сущность вне вашего цикла, поэтому вы создаете только одну новую сущность. Переместите этот бит в начало цикла for:

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

Как:

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];
}
1 голос
/ 26 марта 2012

Я думаю, вы должны поместить это:

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

в первую строку цикла for

0 голосов
/ 26 марта 2012

Вы должны вставить новый контакт для каждого временного массива.Поэтому вам нужно переместить newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:newContext]; в for.

...