В Form1
вы можете открыть подписку на событие FormClosed
второй формы перед ее открытием:
var form2 = new Form2();
form2.FormClosed += Form2_FormClosed;
form2.Show();
Затем вы можете сделать что-нибудь полезное в обработчике событий в Form1
:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Form 2 closed");
}
Вы не хотели бы пытаться заархивировать базовый объект данных и сохранить его. Вместо этого Вы сохранили бы ключ или некоторый другой известный атрибут и использовали бы его для выборки объекта, когда приложение запускает.
Некоторый пример кода (немного измененный от примера, отправленного в Базовое Руководство по программированию Данных ):
NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription
entityForName:@"SearchEngine" inManagedObjectContext:moc];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"engineName LIKE[c] '%@'", selectedEngineName];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *array = [moc executeFetchRequest:request error:&error];
if (array == nil)
{
// Deal with error...
}
Этот способ, которым Вы сохраняете имя в пользовательских значениях по умолчанию и выбираете объект при необходимости.
Если вам нужно сохранить ссылку на конкретный управляемый объект, используйте представление URI его идентификатора управляемого объекта:
NSURL *moIDURL = [[myManagedObject objectID] URIRepresentation];
Затем вы можете сохранить URL-адрес по умолчанию пользователя.
Чтобы получить управляемый объект, который вы используете:
NSManagedObjectID *moID = [myPersistentStoreCoordinator managedObjectIDForURIRepresentation:moIDURL];
NSManagedObject *myManagedObject = [myContext objectWithID:moID];
Единственное предостережение - вы должны убедиться, что исходный идентификатор управляемого объекта является постоянным - это не проблема, если вы уже сохранили объект, в качестве альтернативы вы можете использовать getPermanentIDsForObjects: ошибка:
.