Сохраните CoreData-объекты в NSUserDefaults

В 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");
}
18
задан pnuts 17 September 2015 в 16:18
поделиться

2 ответа

Вы не хотели бы пытаться заархивировать базовый объект данных и сохранить его. Вместо этого Вы сохранили бы ключ или некоторый другой известный атрибут и использовали бы его для выборки объекта, когда приложение запускает.

Некоторый пример кода (немного измененный от примера, отправленного в Базовое Руководство по программированию Данных ):

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...
}

Этот способ, которым Вы сохраняете имя в пользовательских значениях по умолчанию и выбираете объект при необходимости.

6
ответ дан 30 November 2019 в 06:36
поделиться

Если вам нужно сохранить ссылку на конкретный управляемый объект, используйте представление URI его идентификатора управляемого объекта:

NSURL *moIDURL = [[myManagedObject objectID] URIRepresentation];

Затем вы можете сохранить URL-адрес по умолчанию пользователя.

Чтобы получить управляемый объект, который вы используете:

NSManagedObjectID *moID = [myPersistentStoreCoordinator managedObjectIDForURIRepresentation:moIDURL];
NSManagedObject *myManagedObject = [myContext objectWithID:moID];

Единственное предостережение - вы должны убедиться, что исходный идентификатор управляемого объекта является постоянным - это не проблема, если вы уже сохранили объект, в качестве альтернативы вы можете использовать getPermanentIDsForObjects: ошибка: .

35
ответ дан 30 November 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: