【发布时间】:2012-04-14 07:04:45
【问题描述】:
我需要一种方法来获取我的用户当前位置。
由于用户有朋友,而且他们也有位置数据,我认为正确的方法是在我的核心数据数据库中放置一个位置字段,包括Friend 和User 实体。
现在,这就是我的想法:
有某种位置经理 singelton,每当我需要准确的位置时,我都会告诉他开始 CLLocationManager 更新。 (我的经理负责)
管理器将位置保存在 Db 中的 user.location 字段中,对 user.location 信息感兴趣的控制器将使用 KVO 向该数据注册。
这对我来说听起来不错,除了我必须从每个需要准确位置的控制器访问这个位置单(为了告诉他开始生成位置,我不希望位置更新一直处于打开状态)。另外,我尽量不要用一堆单次调用来污染我的代码。
尽管将位置管理器作为我的User 类中的属性可能更明智。 (显然,如果我现在有几个用户在内存中,他们都将共享同一个位置管理器 singelton)
我将在用户类中添加另一个方法并将其命名为“StartGettingLocation”,现在当某个控制器需要当前准确位置时,他可以执行以下操作之一:
- 如果在我的控制器中有一个用户对象(由其他 UIViewController 传递),我只需调用他的“
StartGettingLocation”方法并 KVO 他的位置字段。 - 如果我的 Controller 中没有 User 对象,我会从我的数据库中获取它并按照上述方法进行操作。
这听起来对吗?
如果是这样,我不确定是否可以将 MyLocationManager 的新成员添加到我的 User 类(它是 managedObject 的子类)? 实现此目的的正确方法是什么?
谢谢
【问题讨论】:
标签: ios core-data uiviewcontroller core-location key-value-observing