每个ivar都必须在CoreData中吗?

时间:2014-09-18 15:21:55

标签: ios core-data

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

我有一个物体通过定义左上角和右下角来跟踪地图上的矩形点,就像这样......

@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中构建的。这是一个问题吗?或者我发现只是添加其他属性并按原样使用旧的xcdatamode?

2 个答案:

答案 0 :(得分:1)

我完全取决于你。

如果您有多个实体被多次获取并再次保存,并且每次获取短暂属性时都需要,那么您必须在数据库中保留它们。

但是如果你在获取和保存Object时只需要它们,你可以在课堂上处理它们,而不需要将它们放入数据库中。

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

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

答案 1 :(得分:0)

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

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

在你的情况下,这些方法所做的就是返回其他一个属性值,所以这似乎是要走的路。