TLDR - 目标:构建一个简单的 compass 应用
我是编程新手,我正在挑战自己尝试学习新东西。我研究了编码的主要组成部分,并遵循了一些简单的教程。我也在这里学到了很多东西。
但是,我仍然很难理解如何检索磁力计数据。我已经阅读了 Obj-C 和 Swift 中的 Apple 文档(Swift 是新的, compass 教程几乎完全是在 Obj-C 中完成的),但对于像我这样的新手来说,它们仍然令人困惑,试图将其转换为 swift。
我查找了类似的问题,甚至尝试从中运行代码,但我通常至少会遇到 1 个错误,指出某些内容是预期的、缺失的或未定义的。甚至阻止我测试它......这让我在尝试理解 Xcode 的错误语法方面走了很长一段路。
我知道我必须在我的设备上进行测试,否则我将看不到任何数据。我也知道我必须导入 CoreMotion,然后使用 CMMotionManager 作为检索数据的“网关”,然后定义更新间隔。但我不清楚如何构建实际执行数据检索的那部分代码。
简而言之,我只想使用最简单的准系统途径来检索数据并在我移动手机时打印出来。欢迎对过程进行简单的解释。我保证我不会被冒犯,事实上我会很高兴。
有人想教书吗?
最佳答案
如果您想构建一个简单的 compass 应用程序,我建议您先使用 CLLocationManager
而不是 CMMotionManager
。您实现 CLLocationManagerDelegate
( docs ) 的 locationManager(didUpdateHeading:)
方法。此外,您创建一个 CLLocationManager
( docs ) 并开始标题更新,例如 viewDidLoad
您可以在 XCode 为您创建的 View Controller 中执行此操作:
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.
}
}
这让您开始了,但对于真正的应用程序,您可能希望在 viewWillAppear
和 viewDidDisappear
方法中开始和停止标题更新。
关于ios - 初学者 : Need Help Accessing Magnetometer Data using Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757371/