可选类型'Date?'的值没有打开;你的意思是用'!'要么 '?'?在Swift 4 XCode 9中[重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

如何解开实体date unwrap img的日期@IBOutlet weak var dob: UIDatePicker!

var selectedEntity: TestEntity!

TestEntity Structure

我有以下方式没有人工作

self.dob.date = self.selectedEntity?.dob! //错误编译时间

qazxsw poi //警告即将来临,如果日期为零则运行时崩溃

ios swift core-data optional uidatepicker
2个回答
1
投票

self.dob.date = self.selectedEntity?.dob as! Date是可选的。它的所有值都是可选的。有关更多信息,请参阅Swift文档中的self.selectedEntity?。在将它们用作非可选对象之前,您需要解包您的选项。这就是你在Optional Chaining使用!符号时所做的事情。该力量打开可选项,如果它为零,则您的应用程序将崩溃。您的self.selectedEntity?.dob!对象不是可选的,因此您必须在使用之前打开可选的self.dob.date对象。您可以安全地用这样的东西打开你的self.selectedEntity?.dob对象。

self.selectedEntity

0
投票

安全地打开if let selectedEntity = selectedEntity { self.dob.date = selectedEntity.dob }

selectedEntity

每当Xcode建议使用if let selectedEntity = self.selectedEntity { self.name.text = selectedEntity.name self.dob.date = selectedEntity.date } 时,不要这样做。这是Xcode最糟糕的特性。

© www.soinside.com 2019 - 2024. All rights reserved.