2

それは何ですか?

これが何をするのかよくわかりません。

- (NSString *)sectionIdentifier {

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

    if (!tmp) {

        tmp = @"bananas";

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

なぜこのprimitiveSectionIdentifierが必要なのですか?

最終的には、Appleのドキュメントのサンプルプロジェクトを使用してセクション識別子を作成し、NSFetchedResultsControllerで使用しています。

これは機能しますが。私は自分自身にそれを言っています、

sectionIdentifier」にアクセスし、「tmp」をprimitiveSectionIdentifierに設定します。しかし、primitiveSectionIdentifierには、現時点では何もありません!! しますか?

次に、「 sectionIdentifier 」にアクセスしたと言います。しかし、それが「意志」と「やった」の間でどのように起こったのかはわかりません!

誰かが私がこれを理解するのを手伝ってもらえますか?

4

1 に答える 1

3

[self primitiveSectionIdentifier]は、いわゆる「プリミティブアクセサ」です(Core Dataプログラミングガイドの用語集を参照)。これは、永続ストアから「sectionIdentifier」の値を実際にフェッチする関数です。この関数は、CoreDataランタイムによって自動的に作成されます。

willAccessValueForKeyおよびdidAccessValueForKeyは「通知方法」です。ドキュメントによると、これらはKey-Valueの観察、逆の関係の維持などに使用されます。

したがって、パターンは次のとおりです。

  1. 値を読み取ることを全員に伝えます。
  2. 値を読み取ります。
  3. 値を読んだことをみんなに伝えてください。
于 2012-09-05T18:06:24.787 に答える