swift - 无法将类型的值转换为预期的参数类型 'Bool'

标签 swift

从 Objective-C 转换后,我在 Swift 中遇到问题。谁能帮我解决这个问题?

let brand: GymBrand =  GymBrand.brandForName(name:self.gym.brand)
if brand && brand.logoImageName {

} else {

}

我的 Objective-C 代码:

GYMBrand *brand = [GYMBrand brandForName:self.gym.brand];
if (brand && brand.logoImageName) {  

}else {

}

错误屏幕:

enter image description here

最佳答案

你需要做的是阅读 swift 中的可选项。

Developer Apple

Tutorialpoint

这些是一些很好的引用资料。有两种主要方法可以实现您想要的。

if let brand =  GymBrand.brandForName(name:self.gym.brand) ,

    let imageName = brand.logoImageName {

        //brand is never nil here
        //brand.logoImageName is never nil here
    } else {

    }

我们在这里所做的是我们假设 GymBrand.brandForName(name:self.gym.brand) 可以是可选的,这意味着它可以包含 nil 值。通过使用 if let,我们确保在 if block 内,品牌的值(value)永远不会为零。

但是假设我们不想在 block 内使用它,而是在函数的任何地方使用它。然后我们可以使用一个守卫

guard let brand =  GymBrand.brandForName(name:self.gym.brand) ,let imageName = brand.logoImageName else {

        //brand is nil here
        //brand.logoImageName is nil here
    }

关于swift - 无法将类型的值转换为预期的参数类型 'Bool',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50122058/

相关文章:

ios - Firebase Facebook 登录 - 检测用户登录状态并重定向

swift - Firebase ChildAdded 观察者正在检索不存在的数据

xcode - 导出自定义 swift 模块

ios - 如何在 ViewControllers 之间为不同的 tableViews 提供相同的操作 [swift]

ios - TableViewController 中各部分上方的 Xcode 文本字段

ios - 如何使用适用于 iOS 的 Google Map SDK 将 myLocation 与 Swift 结合使用?

regex - 如何将正则表达式匹配到字符串末尾?

ios - 如何仅从 collectionView 的单元格中重新加载一项? swift 4

swift - 如何使用 Swift 在 Firebase 中的多个结构下添加相同的 childByAutoID?

ios - shouldChangeCharactersIn 结合建议文本