Если бы ваши объекты модели были подклассом NSManagedObject
, тогда ваши средства доступа использовали бы KVC (вы объявляете свойства, а затем используйте «@dynamic» вместо «@synthesize» в файле .m, чтобы указать, что средства доступа будут позаботиться о другом коде).
По сути, это звучит так, как будто вы повторно реализуете ошибочное поведение в Базовых данных.
Исходя из вашего комментария, я могу думать только о том, чтобы иметь своего рода прокси-объект, который содержит ваш реальный объект. Таким образом, ваш прокси-объект будет иметь единственное видимое свойство, которое является вашим реальным объектом, и в аксессоре для этого вы будете проверять, обращались ли вы в базу данных для этого конкретного объекта, если нет, занимайтесь уборкой. ,
Итак, ваши звонки будут
NSString *someProperty = proxyObject.realObject.someProperty;
В proxyObject, средство доступа для realObject:
if (beenToTheDatabase)
return realObject;
else
{
// Do your business
beenToTheDatabase = YES;
return realObject;
}
Является ли это более или менее трудоемким делом, чем ручное написание ваших методов доступа или миграция на основные данные, я не знаю.