***** EDIT ***** Что я не уверен в том, как получить доступ к сущности из модели в коде и как получить доступ к определенному экземпляру объекта в этом коде. Это суммирует основные проблемы, которые у меня возникают.Добавить в arrayController, изменить атрибут Core Data
***** END EDIT *****
У меня есть TableView с кнопкой, чтобы добавить к нему. Когда кнопка нажата, пользователю открывается открытое диалоговое окно, в котором они выбирают файл (ы). В контроллер массива добавляется новый объект. Я не уверен, как это сделать, это изменить основные атрибуты данных для этого нового объекта. Есть два атрибута, имя файла и имя пути, и я не уверен, как их редактировать. Если вы посмотрите на нижнюю часть функции openPanelDidEnd: returnCode: contextInfo: вы увидите, что я пытаюсь выполнить.
- (IBAction)addAttachment:(id)sender
{
panel = [NSOpenPanel openPanel];
[panel beginSheetForDirectory:nil
file:nil
modalForWindow:[NSApp mainWindow]
modalDelegate:self
didEndSelector:@selector(openPanelDidEnd:
returnCode:
contextInfo:)
contextInfo:NULL];
}
- (void)openPanelDidEnd:(NSOpenPanel *)openPanel
returnCode:(int)returnCode
contextInfo:(void *)x
{
if (returnCode == NSOKButton)
{
NSArray *files = [openPanel filenames];
int i;
for (i = 0; i < [files count]; i++)
{
NSString *file = [files objectAtIndex:i];
[attachmentController add:x];
// How do I add filenames here?
// I'm assuming it involves KVC like
// [something setValue:@"file" forKey:@"filename"];
// But I don't know hot to get the something
// i.e. since I have multiple attachments,
// how do I get the one I just created
}
}
}
*********** ************** РЕДАКТИРОВАТЬ упрощенный, моя модель имеет 2 сущности: Привязанность и пункт. Элемент имеет отношение «многие» с приложением, так как каждый элемент может иметь много вложений.
Мои openPanelDidEnd: код возврата: contextInfo: метод теперь выглядит следующим образом:
NSString *filename = [files objectAtIndex:i];
MySchoolPlanner_AppDelegate *myAppDelegate = [[MySchoolPlanner_AppDelegate init] alloc];
[NSEntityDescription insertNewObjectForEntityForName:@"Attachment"
inManagedObjectContext:[myAppDelegate managedObjectContext]];
[myAppDelegate release];
По какой-то причине, вид таблицы, связанный с контроллером Attachment массива не добавляет никаких. Кроме того, я не уверен, как получить доступ к приложению, которое я только что создал, чтобы использовать KVC.
Спасибо за помощь, но я все еще немного смущен. См. Мое редактирование. Спасибо! – Walker
Ну, в вашем коде вы создаете совершенно новый контроллер приложения, либо с помощью второго контекста MO, либо с нуля, и затем уничтожаете его. Это немного назад, поскольку у вас уже есть существующий контекст. Если бы я был на вашем месте, я бы наложил Core Data на удержание, пока у вас не было возможности ознакомиться с каркасом Cocoa и шаблонами дизайна, которые он использует. Основные данные упрощают работу в некоторых отношениях, но не предназначены для замены основ. –
Я знаю, что, наверное, у меня над головой, но я создаю приложение на базе Core Data, хотя большинство данных Core Data делаются в IB. Я планирую подробно ознакомиться с Core Data в ближайшем будущем, но я бы хотел, чтобы этот вопрос был решен прямо сейчас. Спасибо за вашу помощь. Я думаю, что я не уверен в том, как получить доступ к сущности из модели в коде и как получить доступ к конкретному экземпляру объекта в этом коде. – Walker