Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CLFloor返回级别2146959360?_Ios_Iphone_Mapkit_Cllocation - Fatal编程技术网

Ios CLFloor返回级别2146959360?

Ios CLFloor返回级别2146959360?,ios,iphone,mapkit,cllocation,Ios,Iphone,Mapkit,Cllocation,我正在使用,查看属性并检查属性(如果有的话)。文档表明,如果无法确定下限,它将返回nil。实际上,我得到了一个CLFloor实例,但它的级别是2146959360。将其转换为十六进制,0x7FF80000,看起来很像某种神秘的哨兵值 lazy var locationManager: CLLocationManager = { let locationManager = CLLocationManager() locationManager.delegate = self

我正在使用,查看属性并检查属性(如果有的话)。文档表明,如果无法确定
下限
,它将返回
nil
。实际上,我得到了一个
CLFloor
实例,但它的
级别是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设备)会像预期的那样返回
nil
,模拟器也是如此


发生什么事了?

如果你打电话,这个问题就会消失。如果这样做,则属性将为
nil
。此
clloor
实例的值为2146959360(0x7FF80000),仅当您在未调用
startUpdatingLocation
的情况下查询
CLLocationManager
位置时才会出现

文档表明此
位置
属性使用最后一个已知值填充。无论如何,
floor
应该是
nil
(至少对于我的特定位置而言),但不是。
级别
无效

请参见错误显示示例和调用
startUpdatingLocation
工作原理的演示


我已经提交了一份错误报告(FB7638281)。

我同意这与文档相反,但其价值并不令人惊讶。这是NSNotFound。它是否在32位平台上运行(手表)?NSNotFound现在是NSIntegerMax(10.6之前,它始终是0x7fff…,但从10.6开始,它只是一个最大整数)不,在iphonex上只有ios13.3.1(和xsmax),使用Xcode 11.3.1(11C504)。并且该值是0x7ff80000,而不是0x7fffffff。但我想他们从哪里得到这个值并不重要,因为这两种方法都不对。这很奇怪,虽然。在13.4中仍然存在。英雄联盟