2013-04-24 36 views
0

我的代码设置它的实体,上下文等,然后保存一条记录,一切正常。然后我想保存一条NEW记录,但代码会覆盖原始记录。核心数据,在同一实例中向实体添加多个项目

如何在同一实例中编写多个项目?

AppDelegate *appdelagate = [[UIApplication sharedApplication]delegate]; 
context = [appdelagate managedObjectContext]; 
NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"UserData" inManagedObjectContext:context]; 
NSManagedObject *userData = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context]; 
      [userData setValue:@"Bob" forKey:@"userCD"]; 
      [userData setValue:@"Tall" forKey:@"dataCD"]; 
      // Store in the DB 
      [context save:&error]; 

一些如何移动到下一个记录

[userData setValue:@"John" forKey:@"userCD"]; 
    [userData setValue:@"Short" forKey:@"dataCD"]; 
    // Store in the DB 
    [context save:&error]; 

我想我需要释放用户数据,并宣布再次...我还想到我丢失了大量工作,应该停止思维SQL术语。

感谢

回答

2

那是因为你改变了第一个userData对象的创建一个新的属性,而不是 :

NSManagedObject *userData; 
// Create first object: 
userData = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context]; 
[userData setValue:@"Bob" forKey:@"userCD"]; 
[userData setValue:@"Tall" forKey:@"dataCD"]; 
[context save:&error]; 
// [userData release]; only if you don't compile with ARC 

// Create second object: 
userData = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context]; 
[userData setValue:@"John" forKey:@"userCD"]; 
[userData setValue:@"Short" forKey:@"dataCD"]; 
[context save:&error]; 
// [userData release];  only if you don't compile with ARC 
+0

完美的伟大工程,现在很明显的 - 我只是无法看到它。 – 2013-04-24 14:15:40

+0

同样的方式可以做,如果我有15个数据? – codercat 2016-03-18 11:35:05