我使用这个结构,使用这个
struct Ride {
var isRideForNow: Bool!
}
var sheduleRide: Ride?
sheduleRide = Ride()
sheduleRide?.isRideForNow = false
当我这样使用它工作正常
if (sheduleRide?.isRideForNow)! {
//some code
}
但我不知道为什么下面的代码给出错误“类型'bool'被破坏了”,即使里面没有可选的链接
if (sheduleRide!.isRideForNow) {
//some code
}
明确使用yvar!而使用是我工作的方式
这是一个无用的错误消息 - 它似乎只存在于 Swift 版本 3.0 到 3.0.2 中。问题在于 Swift 并没有隐式地解开可选函数,因为它认为您正在尝试执行可选检查。
因此,解决方案,正如@vacawama所说,是简单地显式打开可选:
if sheduleRide!.isRideForNow! {
// some code
}
(如果调度
或isRideForNow
为
零
,当然会崩溃。)
然而,在我看来,Swift在这里没有隐式展开IUO的事实不符合SE-0054中详述的IUO行为,因为iuo应被视为强选项,可以像它们一样进行类型检查,否则应被隐式展开。
在布尔条件下,编译器无法将表达式的类型检查作为强可选项,因此实际上应该隐式展开。此行为作为错误提交,并在该拉取请求中修复,因此声明:
if sheduleRide!.isRideForNow {
// some code
}
现在在Swift 3.1中编译良好。
但实际上,正如@vadian所说,你应该考虑
isRideForNow
是否应该是一个IUO。只有当它需要延迟初始化时(否则不能懒惰
),才应该使它成为一个。
如果您在初始化时给它一个值,那么它可能是非可选的:
struct Ride {
var isRideForNow: Bool
}
var sheduleRide = Ride(isRideForNow: false)
问题内容: 当我尝试创建此错误时出现: 错误(E_UNKNOWN)::遇到意外错误MongoError:Server.insert(/ Users / oscargallon / Documents / developer / sails / reyesmagoswebpae / node_modules / sails- mongo / node_modules / mongodb / node
我在使用Lombok的注释时遇到了问题,因为jar似乎还没有被导入到project中: 上面写着: 无法解析方法信息(java.lang.String) 编译时: 错误:(6,1)java:package-org。slf4j不存在 我做到了: 将lombok的依赖项插入pom 我在这里寻找解决方案: Lombok补充道,但Intellij IDEA中没有认可的能手和二传手 在IntelliJ ID
演示 该网站最初有一些有限的文本,和大量复杂的图形,并在所有5个浏览器上呈现良好。我添加了更多的文本,但现在在Safari中无法使用。我认为转换可能更糟--试着缩放jsfiddle,您会看到人工制品的出现和消失取决于缩放。 有什么想法吗?Safari是不是刚刚坏了?
我试图根据用户使用calandar类输入的日期来确定一天是否是周末。但是当我打印出当天的值时,我得到了不正确的输出。 这是我的代码: 但是输出
我正试图使Filepond工作,但CSS中的这一行似乎破坏了它-在ul选择器中。 我试着对页面的整个部分进行核化,直到Filepond起作用,将目标锁定在css上,最后在ul{}中找到前面提到的行。我可以把其他的东西都抹掉,只留下那条线,而文件孔仍然坏了,所以我肯定这是问题所在,但我不知道是怎么回事。 我尝试使用Chrome的检查器功能查看运行时页面源代码,但在那里找不到溢出。 然后我使用Note
问题内容: 我有一个用Restify和Mongoose在node.js中构建的REST服务,以及一个mongoDB,它的集合包含大约30.000个常规大小的文档。我的节点服务通过pmx和pm2运行。 昨天,节点突然开始通过消息“ MongoError:拓扑已被破坏”消除错误,仅此而已。我不知道这是什么意思,可能触发了什么。谷歌搜索时也没有太多发现。所以我想在这里问。 今天重新启动了节点服务后,错误