У меня есть проект iOS с UIViewController
, который содержит UISegmentedControl
под названием sizeSegmentedControl
. Я хочу, чтобы sizeSegmentedControl
отображал cm
(для сантиметра) в левом сегментеIndex и in
(для дюйма) в своем правом сегментеIndex. Когда я создаю проект, я также хочу, чтобы sizeSegmentedControl
выбирал segmentIndex, соответствующий блоку длины локали устройства. Поэтому я начал со следующим кодом:Что такое тип неявного возврата метода NSLocale objectForKey?
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 Reference, но не смог найти больше по его типу. Поэтому мой вопрос: как я могу узнать реальный тип let localeSystem
?
Спасибо.
Может ли это быть 'NSNumber'? Кажется, он работает с 'NSNumber' ... –