我试图在一个保护语句中调用一个名为“nextPage”的函数,但它说“()”不能转换为“Bool”。要调用此函数,我需要做什么
@IBAction func nextPressed(_ sender: Any) {
let geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(address) { (placemarks, error) in
guard
let placemark = placemarks?.first,
let latVar = placemark.location?.coordinate.latitude,
let lonVar = placemark.location?.coordinate.longitude,
nextPage() // Error - '()' is not convertible to 'Bool'
else {
print("no location found")
return
}
}
}
您应该要么调用返回布尔值的函数,要么不要在Guard谓词语句中执行此类操作,因为它不是调用函数的合适位置。你应该这样做
guard variable != nil else {
//handle nil case
}
// continue work with variable, it is guaranteed that it’s not nil.
guard 语句用于检查是否满足特定条件。您不能将不返回 true 或 false 的函数放在该语句中。
参考:https://developer . apple . com/library/content/documentation/Swift/Conceptual/Swift _ Programming _ Language/statements . html
我相信你想要完成的是
@IBAction func nextPressed(_ sender: Any) {
let geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(address) { (placemarks, error) in
guard
let placemark = placemarks?.first,
let latVar = placemark.location?.coordinate.latitude,
let lonVar = placemark.location?.coordinate.longitude
else {
print("no location found")
return
}
// will only get executed of all the above conditions are met
nextPage() // moved outside the guard statement
}
}
根据我对声明的理解,我正在做以下工作: 我只想了解一下,我们是否可以在 语句中创建一个变量,并在函数的其余部分访问它?或者保护语句是否旨在立即返回或引发异常? 还是我完全误解了声明的用法?
问题内容: 我试图将一个函数传递给另一个函数,然后使传递的函数执行并传递给它一个变量。 这是我的代码: 我得到的错误是 错误是“无法将’String’的值类型转换为预期的参数类型’()’。我知道这是语法问题-只是不知道它应该是什么。 问题答案: Rob的答案是正确的,尽管我想分享一个简单的工作回调/完成处理程序的示例,但是您可以在下面下载示例项目并尝试使用的输入。 斯威夫特5: 重要说明:
问题内容: 我正在学习Swift的语法,想知道为什么下面的代码无法按我期望的那样工作: 我想每次将数字除以3(3、6、9、12等)时都打印Fizz,并且每次将其除以5时都打印Buzz,那么缺少哪一块拼图? 注意:我确实使用以下方法解决了问题: 我想知道如何使用Switch解决此问题。谢谢。 问题答案: FizzBuzz游戏的通常规则 是用“ Fizz”替换每个3的倍数,用“ Buzz”替换每个
我可能有些小问题 如何在bash中调用if语句中定义的函数? 看看我的例子: 所以我的想法是,当我运行脚本时,让我们称之为测试。sh它在bash中运行脚本exp: 我不知道如何创造这样的东西,也许你们中的一些人可以在这方面帮助我。 先谢谢你
有一个类似命名的主题,但该示例是由于用户错误而导致的错误。我相信这个例子是一个实际的XCode问题。 我正在学习一个树屋教程,本着swift2.0的精神,我在初始化程序中使用了guard语句而不是if-lets。我的代码与指令相同,只是使用了警戒语句。它有一个错误,表示“未初始化所有存储属性就从初始化程序返回”。一旦我把它改为if-let语句,它就起作用了。也许我在什么地方犯了错误,但我盯着它看了
Swift 2 引入了 关键字,该关键字可用于确保各种数据已配置就绪。我在这个网站上看到的一个例子演示了一个提交已开发的功能: 我想知道使用< code>guard与使用< code>if条件的老式方法有什么不同。它能给你带来用简单的支票无法得到的好处吗?