ios - 初学者 : Need Help Accessing Magnetometer Data using Swift

标签 ios swift core-motion compass magnetometer

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.             
     }
}

这让您开始了,但对于真正的应用程序,您可能希望在 viewWillAppearviewDidDisappear 方法中开始和停止标题更新。

关于ios - 初学者 : Need Help Accessing Magnetometer Data using Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757371/

相关文章:

ios - TableView 以编程方式滚动到顶部后,UIRefreshControl 不会消失

swift - 我正在尝试设置 coreMotion,但我的加速处理程序中出现此错误?

ios - 初始重力效应结束后方 block 不会掉落

ios - 如何获取 PHAsset 的原始(EXIF?)创建日期/时间?

ios - 尝试将日期选择器时间与当前时间ios进行比较

ios - iPhone(iOS) 和 Apple TV (tvOS) 模拟器之间的通信

iphone - 获取特定地理位置的时间

swift - 请求 iOS 应用程序 Facebook 应用程序事件的跟踪授权

ios - 如何在某个 CGPoint 创建 UIView?

ios - locationManager后台电池生命周期