До работы с Objective-C и Core Data у меня были случаи создания классов, которые нужно было инициализировать с определенными параметрами, которые после инициализации не могли быть изменены (хотя их можно было прочитать).
Я полагаю, что с Core Data я могу создать настраиваемый init для моего производного класса NSManagedObject, если он включает способ вставки объекта в контекст, подобный следующему:
-(Cell*) initWithOwner:(CellList*)ownerCellList andLocation:(int)initLocation
{
if (self = (Cell*) [NSEntityDescription insertNewObjectForEntityForName:@"Cell"
inManagedObjectContext:[ownerCellList managedObjectContext]])
{
self.location = [NSNumber numberWithInt:initLocation];
self.owner = ownerCellList;
[ownerCellList addCellListObject:self];
}
return self;
}
Обычно, у меня была бы переменная местоположения, и свойство location было бы доступно только для чтения (поэтому, будучи установленным при инициализации, его нельзя было изменить). Есть ли способ получить такой шаблон с Core Data? Есть ли лучший способ, о котором я не думаю?
Спасибо!