对于 NSKeyValueCoding 可以处理的结构类型的属性,我使用此处Apple 文档中描述的核心数据访问器模式。
例如,可以在 Core Data 模型中将 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 属性,因此客户端需要获取/设置 NSValues。
使用 mogenerator 处理这种情况的最佳方法是什么,同时 (1) 保持简单的 Transformable 模式而不是弄乱瞬态支持属性,以及 (2) 避免对 Mogenerator 的“机器”类进行任何编辑?