核心数据过度使用?

Posted

技术标签:

【中文标题】核心数据过度使用?【英文标题】:Core Data over using? 【发布时间】:2012-08-01 06:14:01 【问题描述】:

我有一个应用程序可以跟踪用户的驾驶行程(路径)。我使用 Core Data 保存所有信息。

数据库结构:

路径 ->> 点

Point 包含 lat 和 long 值。

我所做的是,每次更新 CLLocationManager 时,我都会将该点添加到数组中。一旦用户到达路径的尽头,我就会遍历并将所有这些位置添加到数据库中。

我的问题是...这是解决此问题的最佳方法吗?我的两个选择是:

    将所有位置添加到数组,然后将所有位置添加到核心数据。

    每次更新 CLLocationManager 时,将其直接添加到核心数据中。

我不确定是否有一些最佳实践来访问/更改核心数据。我应该批量执行(for循环),以便我可以调用

if ([managedObjectContext save:&error]) 
   // handle save error

在 for 循环的末尾并保持其全部压缩。

或者我应该在每次更新后调用[managedObjectContext save:&error] CLLocationManager 时简单地添加一个新点。

我对 Option1 的唯一担忧是,如果应用程序在记录路径时崩溃,则不会保存任何信息。

所以使用 Option2 的一个好处是每次更新后都会保存数据,但我不确定如此频繁地访问核心数据是否是不好的做法。

非常感谢您抽出宝贵时间提供帮助。

【问题讨论】:

【参考方案1】:

假设NSLocationManager 更新频率(最多每隔几秒),经常保存绝对没问题。此外,您的阵列会消耗越来越多的内存,这并不是真正必要的。

您仍然可以谨慎地执行此操作,例如,每 10 点保存一次。

此外,您也许应该保存在applicationWillResignActive 中,以防应用中断。

【讨论】:

以上是关于核心数据过度使用?的主要内容,如果未能解决你的问题,请参考以下文章

抓住业务核心,避免过度抽象

数据库分库分表如何避免“过度设计”和“过早优化”

使用不平衡数据进行过度训练

过度拟合数据集的可能原因

在机器学习中过度拟合术语

过度使用 DataTable 是否很糟糕?