0

ItemとCategoryの2つのエンティティがあります。各アイテムには1つのカテゴリがあり、カテゴリには0から多くのアイテムを含めることができます。

私には特別なカテゴリー、その他のカテゴリーがあります。これをブールプロパティisMiscで表すので、category.isMisc=YESです。

カテゴリを削除するときに、そのアイテムのいずれかを「その他」のカテゴリに再割り当てしたいと思います。だから私はアイテムのために次のカスタムセッターを書きました:

- (void)setCategory:(Category *)category
{
    [self willChangeValueForKey:@"category"];
    if (category == nil) {
        category = [Database theMiscCategory];
    }
    [self setPrimitiveValue:category forKey:@"category"];
    [self didChangeValueForKey:@"category"];
}

問題は、[Database theMiscCategory]がフェッチを実行することですが、これはお勧めできません。これを行う別の方法はありますか?

item.category = nilにすることだけを見てきましたが、これにより、コードの他の領域に十分な複雑さが生じ、「その他」のカテゴリが必要になります。

4

1 に答える 1

1

「その他」のカテゴリオブジェクトは、プログラム内で1回作成またはフェッチできます。たとえば、管理対象オブジェクトコンテキストを作成した後などです。そうすれば、カスタムセッターメソッドは常にこのインスタンスを使用できます。

複数の管理対象オブジェクトコンテキストを使用する場合は、コンテキストごとに1つのオブジェクトを作成する必要があります。

于 2012-12-22T22:41:21.610 に答える