Неожиданное поведение значения ключа в базовом контексте данных - PullRequest
0 голосов
/ 26 апреля 2010

Если я создаю массив строк (с помощью кодирования значения ключа), содержащий имена атрибутов сущности управляемого объекта, которые хранятся в делегате приложения в первый раз, я получаю массив строк 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;

}

1 Ответ

0 голосов
/ 07 мая 2010

Я так и не понял, что происходит. Я сдался, перестроил модель данных, и все было хорошо.

...