Присвоение значений объекту в основных данных - PullRequest
0 голосов
/ 10 марта 2012

Ниже приведен фрагмент кода:

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

Проблема в том, что она работает нормально в первый раз. Но когда я снова добавляю информацию для того же пользователя, она перезаписывает существующую. Как сделать так, чтобы это было записано в следующей строке?

1 Ответ

3 голосов
/ 10 марта 2012

Вы создаете новый управляемый объект для информации (новая строка БД):

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

И затем вы назначаете его пользователю.

login.information = information;

Это не удаляетстарая информация из БД, но пользователь теряет с ней связь.

Я предполагаю, что вам нужно иметь более одного Information экземпляров, подключенных к одному Login экземпляру.Это означает, что вам нужно открыть модель управляемых объектов и изменить отношение один-к-одному на отношение один-ко-многим.

Тогда ваш код будет:

[login.informations addObject:information];

или

information.login = login;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...