Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么斯威夫特';s第一个(其中:)函数未提供预期结果?_Ios_Swift - Fatal编程技术网

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 }