核心数据过度使用?
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
中,以防应用中断。
【讨论】:
以上是关于核心数据过度使用?的主要内容,如果未能解决你的问题,请参考以下文章