是的,documentation有一个例子:
@interface Circle : NSManagedObject
{
CGFloat radius;
}
@property CGFloat radius;
@end
@implementation Circle
- (CGFloat)radius
{
[self willAccessValueForKey:@"radius"];
float f = radius;
[self didAccessValueForKey:@"radius"];
return f;
}
- (void)setRadius:(CGFloat)newRadius
{
[self willChangeValueForKey:@"radius"];
radius = newRadius;
[self didChangeValueForKey:@"radius"];
}
@end
但这几乎就是一切。那么:我该如何建模呢?想象一下这是一个CGRect ......没有这样的类型可供选择。那怎么能起作用呢?丢失了一大块难题。我猜这些是未定义类型的瞬态属性??
答案 0 :(得分:2)
请参阅核心数据编程指南Non-Object attribue
简短回答,您将它们定义为未定义类型的瞬态,然后将它们的值存储在一个或多个持久属性中。
我在模型中喜欢很多细粒度,所以在这种情况下我会创建一个单独的实体来模拟矩形。它有四个属性float。它将具有瞬态值来设置和获取实际的矩形对象。
(CGRect是IIRC实际上由NSKeyedArchiveProtocol支持,所以你不必为他们这样做。)
生成自定义NSManagedObject子类时,该类的属性不限于数据模型中定义的实体的属性。只要不尝试在持久性存储中直接存储该类型,就可以疯狂地拍打任何类型的各种属性。