NSKeyValueCodingが処理できる構造体タイプの属性については、Appleのドキュメントで説明されているCoreDataアクセサーパターンを使用します。
たとえば、NSRange構造体をTransformableタイプのコアデータモデルで指定できます。次に、次の形式のNSManagedObjectサブクラスでアクセサーを提供することにより、クライアントのNSValueリグマロールを回避できます。
インターフェース:
@property(assign, nonatomic) NSRange range;
実装;
- (NSRange) range {
[self willAccessValueForKey:@"range"];
NSRange retVal = range;
[self didAccessValueForKey:@"range"];
return retVal;
}
- (void)setRange:(NSRange)aRange {
[self willChangeValueForKey:@"range"];
range = aRange;
[self didChangeValueForKey:@"range"];
}
ただし、Mogeneratorによって生成されたNSManagedObjectサブクラスは、Transformable属性をNSObjectプロパティとして宣言するため、クライアントはNSValueを取得/設定する必要があります。
(1)一時的なバッキング属性をいじるのではなく、単純なTransformableパターンを維持し、(2)Mogeneratorの「マシン」クラスの編集を回避しながら、mogeneratorでこの状況を処理するための最良の方法は何ですか?