我想在“核心数据”(iPhone)上做得很好

时间:2012-03-26 11:42:48

标签: iphone core-data setvalue

我想将数据保存在核心数据中。

但保存的数据是唯一的最后数据。

我认为,重要的问题是唯一的!只要!保存了最后一个数据。

其实我不太懂英语......

我想让你理解我的问题..

这是我的代码。

正如我解释这段代码。这个项目有一个示例。 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 个答案:

答案 0 :(得分:1)

我想,你应该这样说:

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

进入for循环的第一行

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

答案 2 :(得分:0)

您必须为每个temparray插入一个新联系人。因此,您需要将newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:newContext];移至for。