Ios NSLocale objectForKey方法的隐式返回类型是什么?

Ios NSLocale objectForKey方法的隐式返回类型是什么?,ios,swift,uisegmentedcontrol,nslocale,Ios,Swift,Uisegmentedcontrol,Nslocale,我有一个带有UIViewController的iOS项目,其中包含一个名为sizeSegmentedControl的UISegmentedControl。我希望sizeSegmentedControl在其左段索引中显示cm(表示厘米),在其右段索引中显示(表示英寸)。在构建项目时,我还希望sizeSegmentedControl选择与设备区域设置长度单位对应的分段索引。因此,我从以下代码开始: import UIKit class ViewController: UIViewControlle

我有一个带有
UIViewController
的iOS项目,其中包含一个名为
sizeSegmentedControl
UISegmentedControl
。我希望
sizeSegmentedControl
在其左段索引中显示
cm
(表示厘米),在其右段索引中显示
(表示英寸)。在构建项目时,我还希望
sizeSegmentedControl
选择与设备区域设置长度单位对应的分段索引。因此,我从以下代码开始:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var sizeSegmentedControl: UISegmentedControl!

    override func viewDidLoad() {
        super.viewDidLoad()

        sizeSegmentedControl.setTitle(NSLengthFormatter().unitStringFromValue(0, unit: .Centimeter), forSegmentAtIndex: 0)
        sizeSegmentedControl.setTitle(NSLengthFormatter().unitStringFromValue(0, unit: .Inch), forSegmentAtIndex: 1)

        sizeSegmentedControl.selectedSegmentIndex = NSLocale.currentLocale().objectForKey(NSLocaleUsesMetricSystem)!.boolValue == true ? 0 : 1            
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }    

}
这段代码一切正常,但我知道,如果不在可选绑定中展开可选绑定,则不安全(
-objectForKey:
返回
AnyObject?
)。因此,我将
-viewDidLoad
中的代码更改为:

sizeSegmentedControl.setTitle(NSLengthFormatter().unitStringFromValue(0, unit: .Centimeter), forSegmentAtIndex: 0)
sizeSegmentedControl.setTitle(NSLengthFormatter().unitStringFromValue(0, unit: .Inch), forSegmentAtIndex: 1)

if let localeSystem: AnyObject = NSLocale.currentLocale().objectForKey(NSLocaleUsesMetricSystem) {
    sizeSegmentedControl.selectedSegmentIndex = localeSystem.boolValue == true ? 0 : 1
}
这段代码有效,但现在的问题是我怀疑
AnyObject
是否是
let localeSystem
的真正类型。我查看了NSLocale.h和NSLocale类参考文档,但没有找到更多关于其类型的信息。所以我的问题是:我如何知道let localeSystem
的真正类型

谢谢。

美国

NSLocaleUserMetricSystem

指示区域设置是否使用度量的标志的键 系统。相应的值是一个布尔NSNumber对象。如果 值为否,通常可以假定美国度量单位(例如 例如,法定里程)

您可以在运行时使用可选的强制转换来检查:


它可能是一个
NSNumber
?它似乎与NSNumber配合使用。。。
if let localeSystem = NSLocale.currentLocale().objectForKey(NSLocaleUsesMetricSystem) as? NSNumber {
   ...
}