Ios 为什么斯威夫特';s第一个(其中:)函数未提供预期结果?
嗯。。。人们不喜欢我的问题,但我一点也不清楚为什么。。。我的目标是简洁,而不是长篇大论。。。任何让你们恼火的见解我肯定会有所帮助,我来这里不是为了破坏任何人的一天Ios 为什么斯威夫特';s第一个(其中:)函数未提供预期结果?,ios,swift,Ios,Swift,嗯。。。人们不喜欢我的问题,但我一点也不清楚为什么。。。我的目标是简洁,而不是长篇大论。。。任何让你们恼火的见解我肯定会有所帮助,我来这里不是为了破坏任何人的一天 func createMatchups() { print("tiers are \(tiers[0].status)") var tier = tiers.first(where:{ _ in status == .ready}) print("matching up \(tie
func createMatchups() {
print("tiers are \(tiers[0].status)")
var tier = tiers.first(where:{ _ in status == .ready})
print("matching up \(tier)")
tier!.createMatchups()
}
我希望此代码将层设置为层中的元素,其中状态设置为.ready
相反,它生成以下输出:
tiers are ready
matching up nil
App/tournament.swift:113: Fatal error: Unexpectedly found nil while unwrapping an Optional value
层是具有以下定义的类:
class Tier {
var id: String = UUID().uuidString
var tournament : Tournament?
var playerCount: Int = 0
var roundRobins: Array<RoundRobin> = []
var final: Bool = false
var status: tierStatus = .ready
…
}
有人能解释一下为什么我似乎没有获得第一层的状态。准备好了吗?您使用了错误的速记语法。一定是
var tier = tiers.first(where:{ $0.status == .ready})
甚至更短
var tier = tiers.first { $0.status == .ready }
tiers.first(其中:{tier in tier.status===.ready})
您很可能被否决,因为您似乎没有试图理解您正在编写的代码。可能,但正如我在评论中解释的那样,这是Swift提供的代码,当时它提供“修复”我的代码。在我看来,反对票是关于Swift提供的代码是否能够正常工作的合理假设。这与期望有人在键入函数时质疑自动完成是一样的。也许问题是,大多数在Stackoverflow中提交非工作代码的人实际上并不理解他们正在编写的代码,无法使其正常工作,。。。当斯威夫特提出“修复”我的代码时,有什么被取代了。。。。
var tier = tiers.first { $0.status == .ready }