2012-03-10 120 views
0

下面是我的代碼片段:分配值在覈心數據對象

NSFetchRequest *request= [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Login" inManagedObjectContext:self.managedObjectContext]; 
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"userid==%@ AND password==%@",useridentered, passwordentered]; 
[request setEntity:entity]; 
[request setPredicate:predicate]; 
NSError *anyError=Nil; 
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:request error:&anyError]; 

Login *login = [fetchedObjects objectAtIndex:0]; 
Information *information = [NSEntityDescription insertNewObjectForEntityForName:@"Information" inManagedObjectContext:self.managedObjectContext]; 
login.information = information; 
login.information.title = informationTitleTextView.text; 
login.information.info_1 = information1textview.text; 
login.information.info_2 = information2textview.text; 

[self.managedObjectContext save:nil]; // write to database 
NSLog(@"login.information %@",login.information.title); 
NSLog(@"login.title %@", login.userid); 
    [self.delegate savebuttontapped:self]; 

的問題是,它工作正常的第一次。但是當我再次爲同一用戶添加信息時,它會覆蓋現有的信息。如何確保它被寫入下一行?

+0

可以格式化你的代碼。 – iamsult 2012-03-10 07:44:26

+0

@iamsult我應該做什麼格式? – user1253637 2012-03-10 08:03:32

+0

您確定要將密碼保存到數據庫嗎? – Sulthan 2012-03-10 08:19:13

回答

3

你正在創建的信息(新DB行)新的管理對象:

Information *information = [NSEntityDescription insertNewObjectForEntityForName:... inManagedObjectContext:...]; 

然後將其分配給用戶。

login.information = information; 

這不會從數據庫中刪除舊信息,但用戶會失去與其的關係。

我想你想要的是多個Information實例連接到一個Login實例。 這意味着您必須打開託管對象模型並將一對一關係更改爲一對多關係。

那麼你的代碼將是:

[login.informations addObject:information]; 

information.login = login; 
+0

非常感謝..它的工作:) – user1253637 2012-03-10 21:15:17

+0

在這種情況下,請接受答案。 – Sulthan 2012-03-10 22:00:04