2010-03-26 61 views
0

我即将构建一个应用程序,该应用程序具有位置数据库(lon/lat),并且即将构建dataModel。 Actualy该应用程序非常简单,我想要的只是能够获取用户周围的所有地方(比如在半径30英里内)。iPhone地理标记数据(SQLite或CoreData)

用户SQLite更好吗(有没有地理空间扩展)?

我将在数据库中有大约5000个位置,我想知道我可以在哪里询问数据库而不影响性能。

回答

2

我会与CoreData一起处理性能问题。 CoreData在执行单个操作时非常有用,例如向商店中读取或插入记录,但在执行批量操作时失败,因为您必须迭代所有对象才能执行更新或删除操作。

另一方面,SQLite比批量操作中的CoreData慢一点但比CoreData快一些。

我有我的应用程序使用CoreData与8k +条目,我没有问题。我遇到的唯一问题是进行批量操作时,我更新了我的应用程序,以便对需要批量更新的数据使用SQLite。

您还可以使用CoreData访问SQLite。

+0

嗯。 听起来有趣。 如何使用CoreData访问SQLite? 另一方面,我有点混淆我怎么可以CoreData和检索所有地方附近另一个没有实际提取许多对象和做一个距离比较InMemory? 你能指点我一个解决方案吗? – clide313 2010-03-26 13:51:54

+0

CoreData被创建为将数据存储处理为对象,因此您甚至可以拥有XML并将其用作存储,您必须使用NSPersistentStoreCoordinator并将存储类型设置为NSSQLiteStoreType。无论如何,我错过了你想要通过radius获取的部分,如果这是SQLite的情况,因为你不能在CoreData中具有聚合函数。是的,如果你使用CoreData,你将不得不将对象提取到一个NSMutableArray中,并从那里获取它们,这听起来不是一个好主意。 – 2010-03-26 14:33:01

+0

感谢您的帮助。 我认为我应该去SQLite,因为我想做一些半径搜索。 – clide313 2010-03-29 11:40:54