Добавление пользовательских методов для разделенного на подклассы NSManagedObject

У меня есть Базовая Модель данных, где у меня есть объект A, который является кратким обзором. Объекты B, C, и D наследовались объекту A. Существует несколько свойств, определенных в объекте, которые используются B, C, и D.

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

Например:

  1. Я добавляю метод к интерфейсу для объекта, который возвращает значение и берет один аргумент
  2. Я добавляю реализации этого метода к A, B, C, D
  3. Затем я звоню executeFetchRequest: получать все экземпляры B
  4. Я называю метод на объектах полученным, который должен назвать реализацию метода содержавшейся в реализации B

Я попробовал это, но при вызове метода, я получаю:

[NSManagedObject methodName:]: нераспознанный селектор отправляется в экземпляр

Я предполагаю, что это вызвано тем, что объекты, возвращенные executeFetchRequest: какие-то объекты прокси.

Там какой-либо путь состоит в том, чтобы усилить наследование с помощью, разделил NSManagedObjects на подклассы?

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

Любая справка ценится, заранее спасибо.

14
задан Gordon Gustafson 27 January 2010 в 21:55
поделиться

2 ответа

Это должно работать. Объекты, возвращаемые ExecuteFethRequest: являются реальными экземплярами nsmanageObject s (или их подклассов.) Шаги для использования пользовательских классов в Coredata следующие. Скажем, у вас есть субъекты A и B, где B наследует от А. Затем вам нужны два пользовательских класса как

@interface A:NSManagedObject{
}
-(void)someMethod:(NSString*)a;
@end;
@interface B:A{
}
-(void)someMethod:(NSString*)a;
@end;

, а затем установите их в моделизере XCode Data Modeler, как показано:

screenshot of XCode modeler

таким образом, COREDATA автоматически назначает правильный класс в NsmanageObject , когда он получен из базы данных Отказ

25
ответ дан 1 December 2019 в 06:31
поделиться

Как и говорил роман, можно создать пользовательский javascript-объект, реализующий GOverlay .

Вот пример из другого вопроса S.O., где парень хотел вставить SVG поверх карты Google. Однако я почти уверен, что вы могли бы использовать его решение, чтобы просто вставить HTML.

Как наложить диаграммы SVG на Google Maps?

-121--4378861-

Сначала преобразуйте текст, ключ и вектор инициализации в байты с помощью выбранной кодировки. Тогда используйте тройной поставщик DES, как показано здесь:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledes.aspx

Или тот, который для AES, если вы считаете тройной DES слишком старой школы, или что угодно.

Из любопытства, как вы планируете передавать секретный ключ?

-121--2774038-

Если вы получаете это исключение, это означает, что Core Data не использует пользовательский класс. Ключ здесь - NSManagedObject - это объект Core Data, созданный для объектов в хранилище данных.

Если вы еще не создали класс, наследующий от NSManagedObject , добавьте туда пользовательские методы, а затем задайте сущность A для использования пользовательского класса в инструменте объектной модели. Если объекты B , C , D и т.д. имеют определенное поведение, следует подкласс, созданный для объекта A , и назначить эти объекты для использования подклассов.

По сути, у вас параллельная иерархия: одна иерархия сущностей, а другая - классов. Вероятно, для каждой сущности в объектной модели будут использоваться сущность X и класс X .

18
ответ дан 1 December 2019 в 06:31
поделиться
Другие вопросы по тегам:

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