Ida*_*dan 6 core-data key-value-observing core-location uiviewcontroller ios
我需要一种方法来获取我的用户当前位置.
由于用户有朋友,并且他们也有位置数据,我认为正确的方法是在我的核心数据db中放置一个位置字段,包括in Friend和Userentity.
现在,这就是我的想法:
有一些位置经理singelton,每当我需要准确的位置,我告诉他开始CLLocationManager更新.(我的经理负责)管理员将位置保存在Db中的user.location字段中,对user.location信息感兴趣的控制器将使用KVO注册到该数据.这对我来说听起来不错,除了我必须从每个需要准确位置的控制器访问这个位置singelton这一事实(为了告诉他开始生成位置,我不希望位置更新一直在进行).另外,我尽量不用一堆singelton调用来污染我的代码.
我可能更喜欢将位置经理作为我User班级内的财产.(显然,如果我现在在内存中有一些用户,他们将共享相同的位置管理器singelton)我将向用户类添加另一个方法并将其称为" StartGettingLocation",现在每当某个控制器需要当前准确的位置时,他可以执行以下操作之一:
StartGettingLocation"方法和KVO他的位置字段.这听起来不错吗?
如果是这样,我不确定的是,是否可以将MyLocationManager的新成员添加到我的User类(它是managedObject的子类)?什么是正确的方法来实现这一目标?
谢谢
我们将我们的CoreLocationManager模式实现为共享实例(单例)。我不确定您是否希望托管对象拥有 CoreLocation 行为,因为它实际上不是特定于 的东西User,而是特定于设备(即 iPhone、iPad)。
实际上CoreLocationManager也不应该更新数据库记录。其目的是发送更新的位置。其他东西需要侦听这些更新,因此您可以让其他东西实现CLLocationManagerDelegate,这反过来又可以更新托管对象。
或者,您可以让自己CoreLocationManager成为自己的代表并拥有一个@propertyon CLLocation。您可以使用 KVO 通知观察者位置已按照您的建议进行更改。我想这一切都取决于位置是否只与用户相关,或者位置是否是任何东西都可以使用的东西。
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |