TLDR - 目标:构建一个简单的指南针应用程序
我在编码方面崭露头角,我挑战自己尝试学习新东西。我已经研究了编码的主要组件,并遵循了一些简单的教程。我也在这里学到很多东西。
但是,我仍然很难理解如何检索磁力计数据。我已经阅读了Obj-C和Swift中的Apple文档(Swift是新的,指南针教程几乎完全在Obj-C中完成),但它们仍然让人感到困惑,对于像我一样新的人来说,试图将其转换为swift。
我查找了类似的问题,甚至尝试从他们那里运行代码,我通常会得到至少1个错误,说明某些内容是预期的或缺失的或未定义的。阻止我甚至测试它...这使我走上了试图理解Xcode的错误语法的漫长道路。
我知道我必须在我的设备上进行测试,否则我不会看到任何数据。我也知道我必须导入CoreMotion,然后使用CMMotionManager作为一个网关'检索数据,然后定义更新间隔。但我还不清楚如何构建实际检索数据的那部分代码。
简而言之,我只想让准系统最简单的方法来检索数据并在我移动手机时打印。我们欢迎对这个过程进行愚蠢的解释。我保证不会被冒犯,事实上我很高兴。
有教学情绪的人吗?
答案 0 :(得分:1)
如果您想构建一个简单的指南针应用,我建议您先使用CLLocationManager
而不是CMMotionManager
。您实施locationManager(didUpdateHeading:)
CLLocationManagerDelegate
(docs)的CLLocationManager
方法。此外,您创建viewDidLoad
(docs)并开始标题更新,例如在class MyViewController: UIViewController, CLLocationManagerDelegate {
var locationManager: CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.startHeadingUpdates()
}
override func locationManager(_ manager: CLLocationManager!,
didUpdateHeading newHeading: CLHeading!) {
println("New heading \(newHeading.magneticHeading)")
// TODO: update your UIViews that draw the compass here.
}
}
中您可以在视图控制器中执行此操作,XCode为您创建:
viewWillAppear
这可以帮助您入门,但对于实际应用程序,您可能希望开始和停止使用viewDidDisappear
和{{1}}方法更新标题。
答案 1 :(得分:1)
您需要确保您的应用已正确要求获得许可并正确设置了plist
代码段:
// don't forget iOS 8 wants the plist value too!
if (locationManager.respondsToSelector(Selector("requestWhenInUseAuthorization"))) {
locationManager.requestWhenInUseAuthorization()
}