gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:43:51 27 4
gpt4 key购买 nike

我有一个带有 UIViewController 的 iOS 项目,其中包含一个名为 sizeSegmentedControlUISegmentedControl。我希望 sizeSegmentedControl 在其左侧的 segmentIndex 中显示 cm(表示厘米),在其右侧的 segmentIndex 中显示 in(表示英寸)。当我构建项目时,我还希望sizeSegmentedControl 选择与设备语言环境长度单位对应的segmentIndex。因此,我从以下代码开始:

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()
}

}

这段代码一切正常,但我知道如果不在可选绑定(bind)中解包一个可选的是不安全的(-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
}

这段代码有效,但现在的问题是我怀疑 AnyObjectlet localeSystem 的真实类型。我查看了 NSLocale.hNSLocale Class Reference 文档,但找不到有关其类型的更多信息。所以我的问题是:我怎么知道 let localeSystem 的真实类型?

谢谢。

最佳答案

documentation

NSLocaleUsesMetricSystem

The key for the flag that indicates whether the locale uses the metric system. The corresponding value is a Boolean NSNumber object. If the value is NO, you can typically assume American measurement units (for example, the statute mile).

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

if let localeSystem = NSLocale.currentLocale().objectForKey(NSLocaleUsesMetricSystem) as? NSNumber {
...
}

关于ios - NSLocale objectForKey 方法的隐式返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25794184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com