我有两个视图(一个表,一个集合)。在每个View的Cell中,有一个按钮,当被点击时应获取用户的当前位置并将其传递给要在Deeplink中使用的变量。
我可以通过在两个视图中实现CoreLocation
来实现这一目标,但我尝试遵循DRY并因此编写一个类或在AppDelegate中实现它一次,并在用户时调用它从View的Cell中按下按钮。
我已经看过类似的问题,建议使用Singleton模式,或使用NSNotificationCenter
并观察按下按钮的时间。
在这种情况下是否有最佳实施的想法?
答案 0 :(得分:0)
基本上,你想要这样的东西:
final class UserLocationFinder: NSObject, CLLocationManagerDelegate {
static let instance = UserLocationFinder()
var currentLocation: CLLocation?
// implement the code necessary to get the user's location and
// assign it to currentLocation
}
然后在需要知道当前位置的代码中,您可以:
if let currentLocation = UserLocationFinder.instance.currentLocation {
// the current location is known
这样你就满足了DRY,因为代码只在这一个类中,并且你满足单一责任原则(SRP),因为你不会因为额外的职责而重载AppDelegate
......