繁体   English   中英

是否每个ivar都必须位于CoreData中?

[英]Does every ivar have to be in CoreData?

这可能是一个完全愚蠢的问题,但是我是CD菜鸟...

我有一个对象,它通过定义左上角和右下角来跟踪地图上的矩形点,如下所示...

@property (nonatomic) float latitudeNorth;          // same as "northwest"
@property (nonatomic) float latitudeSouth;          // same as "southeast"
@property (nonatomic) float longitudeEast;          // same as "southeast"
@property (nonatomic) float longitudeWest;          // same as "northwest"

现在,我需要再添加四个点,以便可以使用多边形而不是纯矩形。 所以我想添加这个...

@property (nonatomic) float latitudeNorthEast;
@property (nonatomic) float latitudeSouthWest;
@property (nonatomic) float longitudeNorthEast;
@property (nonatomic) float longitudeSouthWest;

这些数据点是短暂的,仅在应用程序运行时才存在。 但是,它们最初是在xcdatamodeld中构建的。 这有问题吗? 还是我发现只是添加其他属性并按原样使用旧的xcdatamodeld?

我取决于您的完整结构。

如果还有一些实体需要多次获取并再次保存,并且每次都需要获取临时属性,则必须将它们保存在数据库中。

但是,如果仅在获取和持有对象时需要它们,则可以在类中处理它们,而无需将它们放入数据库中。

并非数据库中的每个项目也都必须在提取的类中;)

但是大多数属性也将被保存,因为它们必须通过其他服务进行更新,或者必须在其他视图中呈现这些更新。 或者也可能是因为您不想一直保留属性,或者会再次获取它们(即在tableView.reloadData之后)并且不想丢失计算的结果

您可以在托管对象子类中声明其他属性。 当您从持久性存储中加载对象时,它们不会被初始化(当您关闭应用程序并再次打开它时,值将消失),但是您可以解决这个问题。 但是,有更好的方法可以做到这一点。 例如,您可以编写用于现场计算值的方法:

-(float)latitudeNorthEast;
-(float)latitudeSouthWest;
-(float)longitudeNorthEast;
-(float)longitudeSouthWest;

在您的情况下,这些方法所做的只是返回其他属性值之一,因此这似乎是可行的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM