解包 Optional 时,pickerView 意外发现 nil
Posted
技术标签:
【中文标题】解包 Optional 时,pickerView 意外发现 nil【英文标题】:pickerView unexpectedly found nil while unwrapping an Optional 【发布时间】:2015-03-20 07:25:27 【问题描述】:我有以下代码。没有错误。应用程序崩溃。不确定我是否正确初始化。请,非常感谢任何帮助。
@IBOutlet weak var myCostPicker: UIPickerView!
var costCode = String()
override func viewDidLoad()
super.viewDidLoad()
if let projectNum = projectNum
projectNumTitle.title = projectNum
updateLabels()
myCostPicker.dataSource = self
myCostPicker.delegate = self
myCostPicker.showsSelectionIndicator = true
self.view.backgroundColor = UIColor.blackColor()
let pickerData = ["Nothing", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"]
let costCodeData = ["Nothing", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"]
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
return 1
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
return pickerData.count
// MARK: - Picker Delegates
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String
return pickerData[row]
func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString?
let titleData = pickerData[row]
var myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 15.0)!,NSForegroundColorAttributeName:UIColor.whiteColor()])
return myTitle
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
myLabel.text = pickerData[row]
costCode = costCodeData[row]
达到了心理障碍。需要有人来敲打我的脑袋。赞赏。
【问题讨论】:
您是否尝试过像这个问题一样初始化 UIPicker 视图? ***.com/questions/25314025/… 将此代码添加到您的 viewDidLoad 函数中,在 super.viewDidLoad() 之后:if myCostPicker == nil fatalError("myCostPicker is nil, because it is not hooked up in storyboard.")
您是否在界面生成器中将IBOutlet
链接到UIPickerView
?
【参考方案1】:
如果我理解你的问题是正确的,你似乎在你的故事板或 XIB 中完成了选择器设置,但选择器似乎没有填充来自 pickerData 数组的数据。
我尝试了您的代码并且它工作得很好,它可能是您可能没有完成的 IBOutlet 链接到正确的视图控制器类,另外,如果您使用故事板/XIB 方法,请尝试添加数据源和委托.storyboard 或 .xib 文件本身
或
由于某些有趣的原因,pickerData 可能会被刷新,您可以使用调试器进行检查。
如果所有设置都正确完成,然后您也无法看到最终输出,那么有时当您创建新的可可触摸类文件时,它们未正确创建,因此您删除它们并重新创建它们(我知道真实愚蠢,但有时确实有效)
【讨论】:
这是缺少的 IBOutlet 参考。感谢您的帮助。 @MichaelReilly : 很高兴我能对你有所帮助,Happy Coding以上是关于解包 Optional 时,pickerView 意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章
使用 Core Data 解包 Optional 值时意外发现 nil
在 Swift 中对 Optional 值进行测试后解包时出错
AVCaptureDeviceInput在解包Optional值时意外发现nil