Программное добавление в сущность Core Data (например, привязка IB 'add')
У меня есть базовая модель данных с сущностью под названием клиенты, которая состоит из следующих атрибутов:
Если я нажму кнопку "Добавить клиента" и открою следующее окно:
Каков будет правильный метод для программного добавления новой записи для каждого свойства одновременно (аналогично тому, как кнопка "Добавить" связанной IB будет работать с NSArrayController
) и они появляются в текстовых полях окна "Добавить клиента" для редактирования? Текстовые поля в окне "Добавить клиента" привязаны к соответствующим свойствам (при этом одно или два по-прежнему отсутствуют) объекта клиента. Код, который у меня есть на данный момент:
- (IBAction)addNewClient:(id)sender;
{
[addClientsWindow makeKeyAndOrderFront:self];
//NSManagedObjectContext *clientsMoc= [clientsController managedObjectContext];
//[clientsMoc addObject:[clientsMoc newObject]];
[clientsController addObject:[clientsController newObject]];
}
Который работал для других объектов в этом проекте, но не работает для клиента, так как я добавил типы отношений (это вызывает ошибки KVC в консоли). Я думаю, это потому, что я обращаюсь к NSArrayController
а не NSManagedObjectContext
но закомментированный код не работает для меня. Эта попытка вытекает из предыдущего вопроса, так как вопрос сильно изменился, и я изо всех сил пытаюсь выполнить данный совет. Мне действительно нужна хорошая отправная точка, и документы Apple Dev не помогают мне понять это.
Заранее спасибо!
---- Обновить ----
Я плохо объясняю вещи в этом вопросе? Я новичок здесь, но подумал, что может быть попытка ответа. Гуглить это было сложно по какой-то причине. Возможно, я нашел что-то похожее на решение с помощью несвязанного поиска Google. К счастью, это было важно для этого.
- (IBAction)addNewClient:(id)sender;
{
[addClientsWindow makeKeyAndOrderFront:self];
NSManagedObjectContext *clientsMoc= [clientsController managedObjectContext];
NSManagedObject *clientsEntity = [NSEntityDescription
insertNewObjectForEntityForName:@"Clients"
inManagedObjectContext:clientsMoc];
[clientsEntity setValue:@"name" forKey:@"clientName"];
[clientsEntity setValue:@"company" forKey:@"clientCompany"];
[clientsEntity setValue:@"address" forKey:@"clientAddress"];
[clientsEntity setValue:@"11111111" forKey:@"clientLandline"];
[clientsEntity setValue:@"email@gmail.com" forKey:@"clientEmail"];
}
Это создало совершенно новую запись для объекта клиентов - я не понимал, что мне придется делать индивидуальные значения для каждого свойства. Однако ошибки KVC продолжались, и я никак не мог найти решение. Документы Apple Dev были действительно полезны в этом, здесь, и добавление NSBindingDebugLogLevel 1
в списке "Аргументы, подлежащие передаче при запуске" я подробно описал причину проблемы. Это была старая привязка к NSTableColumn
это не было обновлено.
1 ответ
Это может быть решение, которое я был после:
- (IBAction)addNewClient:(id)sender;
{
[addClientsWindow makeKeyAndOrderFront:self];
NSManagedObjectContext *clientsMoc= [clientsController managedObjectContext];
NSManagedObject *clientsEntity = [NSEntityDescription
insertNewObjectForEntityForName:@"Clients"
inManagedObjectContext:clientsMoc];
[clientsEntity setValue:@"name" forKey:@"clientName"];
[clientsEntity setValue:@"company" forKey:@"clientCompany"];
[clientsEntity setValue:@"address" forKey:@"clientAddress"];
[clientsEntity setValue:@"11111111" forKey:@"clientLandline"];
[clientsEntity setValue:@"email@gmail.com" forKey:@"clientEmail"];
}
Это создало совершенно новую запись для объекта клиентов - я не понимал, что мне придется делать индивидуальные значения для каждого свойства. Однако ошибки KVC продолжались, и я никак не мог найти решение. Документы Apple Dev были действительно полезны в этом, здесь, и добавление NSBindingDebugLogLevel 1
в списке "Аргументы, подлежащие передаче при запуске" я подробно описал причину проблемы. Это была старая привязка к NSTableColumn
это не было обновлено.