CLFloor returns 水平 2146959360?
CLFloor returns level 2146959360?
我正在使用 CLLocationManager
, looking at the location
property and examining the level
of the floor
,如果有的话。文档建议如果它不能确定 floor
,它只会 return nil
。实际上,我得到一个 CLFloor
实例,但它的 level
是 2146959360。将其转换为十六进制,0x7FF80000,这看起来很像一些神秘的标记值。
lazy var locationManager: CLLocationManager = {
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
return locationManager
}()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
switch CLLocationManager.authorizationStatus() {
case .notDetermined: locationManager.requestWhenInUseAuthorization()
case .denied: redirectToSettings()
default: break
}
}
@IBAction func didTapGetLocation(_ sender: Any) {
updateLabels(for: locationManager.location)
}
func updateLabels(for location: CLLocation?) {
guard let location = location else {
floorLabel.text = "No location."
return
}
if let floor = location.floor {
let hexString = "0x" + String(format: "%08x", floor.level)
floorLabel.text = "\(floor.level) (\(hexString))"
} else {
floorLabel.text = "No floor."
}
}
我仅在物理 iOS 13.3.1 设备上看到此行为。 FWIW,旧 iOS 版本(我这里只有 iOS 10 台设备)出现 return nil
,正如预期的那样,模拟器也是如此。
怎么回事?
如果您调用 startUpdatingLocation
. If you do that, then the floor
property will be nil
. This CLFloor
instance with a level
,此问题就会消失 2146959360 (0x7FF80000) 的值仅在您查询 CLLocationManager
的 location
而未先调用 startUpdatingLocation
时才会出现.
文档表明此 location
属性 填充了最后一个已知值。无论如何,floor
应该是 nil
(至少对于我的特定位置)但不是。 level
无效。
请参阅 this repo 的错误表现示例和调用 startUpdatingLocation
工作原理的演示。
我已提交错误报告 (FB7638281)。
我正在使用 CLLocationManager
, looking at the location
property and examining the level
of the floor
,如果有的话。文档建议如果它不能确定 floor
,它只会 return nil
。实际上,我得到一个 CLFloor
实例,但它的 level
是 2146959360。将其转换为十六进制,0x7FF80000,这看起来很像一些神秘的标记值。
lazy var locationManager: CLLocationManager = {
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
return locationManager
}()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
switch CLLocationManager.authorizationStatus() {
case .notDetermined: locationManager.requestWhenInUseAuthorization()
case .denied: redirectToSettings()
default: break
}
}
@IBAction func didTapGetLocation(_ sender: Any) {
updateLabels(for: locationManager.location)
}
func updateLabels(for location: CLLocation?) {
guard let location = location else {
floorLabel.text = "No location."
return
}
if let floor = location.floor {
let hexString = "0x" + String(format: "%08x", floor.level)
floorLabel.text = "\(floor.level) (\(hexString))"
} else {
floorLabel.text = "No floor."
}
}
我仅在物理 iOS 13.3.1 设备上看到此行为。 FWIW,旧 iOS 版本(我这里只有 iOS 10 台设备)出现 return nil
,正如预期的那样,模拟器也是如此。
怎么回事?
如果您调用 startUpdatingLocation
. If you do that, then the floor
property will be nil
. This CLFloor
instance with a level
,此问题就会消失 2146959360 (0x7FF80000) 的值仅在您查询 CLLocationManager
的 location
而未先调用 startUpdatingLocation
时才会出现.
文档表明此 location
属性 填充了最后一个已知值。无论如何,floor
应该是 nil
(至少对于我的特定位置)但不是。 level
无效。
请参阅 this repo 的错误表现示例和调用 startUpdatingLocation
工作原理的演示。
我已提交错误报告 (FB7638281)。