0

コアデータにデータを保存したい。

ただし、保存されたデータは最後のデータのみです。

私は、重要な問題は唯一のものだと思います!それだけ!最後の 1 つのデータを保存しました。

実は私は英語があまり得意ではありません...

私の質問を理解してください..

これは私のコードです。

このコードを説明すると。このプロジェクトにはサンプルがあります。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];
    }
4

3 に答える 3

1

ループの外で新しいエンティティを作成しているので、新しいエンティティを 1 つだけ作成します。このビットを 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];
}
于 2012-03-26T11:47:17.910 に答える
1

私は、あなたはこれを置くべきだと思います:

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

forループの最初の行に

于 2012-03-26T11:45:45.100 に答える
0

temparray ごとに新しい連絡先を挿入する必要があります。そのため、in を forに移動する必要があります newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:newContext];

于 2012-03-26T11:46:28.647 に答える