2

它是什么?

我不确定我是否完全理解这是做什么的。

- (NSString *)sectionIdentifier {

    [self willAccessValueForKey:@"sectionIdentifier"];
    NSString *tmp = [self primitiveSectionIdentifier];
    [self didAccessValueForKey:@"sectionIdentifier"];

    if (!tmp) {

        tmp = @"bananas";

        [self setPrimitiveSectionIdentifier:tmp];
    }
    return tmp;
}

我怎么需要这个originalSectionIdentifier

最终,我使用 Apple 文档中的示例项目来创建部分标识符,以与我的 NSFetchedResultsController 一起使用。

虽然这确实有效。我对自己说,

sectionIdentifier ”将被访问,然后我将“ tmp ”设置为primitiveSectionIdentifier。但是primitiveSectionIdentifier此时什么都没有!可以?

然后我说我确实访问了“ sectionIdentifier ”。但我看不出“Will”和“Did”之间是如何发生的!

有人可以帮我理解这一点吗?

4

1 回答 1

3

[self primitiveSectionIdentifier]是所谓的“原始访问器”(参见核心数据编程指南的词汇表)。这是实际从持久存储中获取“sectionIdentifier”值的函数。该函数由 Core Data 运行时自动创建。

willAccessValueForKey并且didAccessValueForKey是“通知方法”。根据文档,它们用于键值观察、维护反向关系等。

所以模式是:

  1. 告诉大家你要读取一个值。
  2. 读取值。
  3. 告诉大家您已经阅读了该值。
于 2012-09-05T18:06:24.787 回答