Если я создаю массив строк (с помощью кодирования значения ключа), содержащий имена атрибутов сущности управляемого объекта, которые хранятся в делегате приложения в первый раз, я получаю массив строк NSStrings без каких-либо проблем. Если впоследствии я сделаю тот же вызов позже из той же точки входа в коде, эта же коллекция станет массивом объектов NULL, даже если ничего в Базовом контексте данных не изменилось.
Один непривлекательный обходной путь заключается в повторном создании массива строк каждый раз, но мне интересно, есть ли у кого-нибудь догадки относительно того, что происходит за кулисами.
// Return an array of strings with the names of attributes the Activity entity
- (NSArray *)activityAttributeNames {
#pragma mark ALWAYS REFRESH THE ENTITY NAMES?
//if (activityAttributeNames == nil) {
// Create an entity pointer for Activity
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Activity" inManagedObjectContext:managedObjectContext];
NSArray *entityAttributeArray = [[NSArray alloc] initWithArray:[[entity attributesByName] allValues]];
// Extract the names of the attributes with Key-Value Coding
activityAttributeNames = [entityAttributeArray valueForKeyPath:@"name"];
[entityAttributeArray release];
//}
return activityAttributeNames;
}