核心数据上下文中出现意外的键值行为

时间:2010-04-26 00:20:30

标签: objective-c core-data key-value-coding

如果我创建一个字符串数组(通过键值编码),其中包含第一次存储在App Delegate中的Managed Object实体的属性名称,我会得到一个NSStrings数组,没有任何问题。如果我随后从代码中的相同入口点进行相同的调用,则同一集合将成为NULL对象的数组 - 即使Core Data Context中没有任何内容发生更改。

一个没有吸引力的解决方法是每次重新创建字符串数组,但我想知道是否有人猜测幕后发生了什么。

// 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 :(得分:0)

我从未弄清楚发生了什么。我放弃了,重建了数据模型,一切都很好。