Невозможно преобразовать значение типа в ожидаемый тип аргумента 'Bool' - PullRequest
0 голосов
/ 01 мая 2018

Я столкнулся с проблемой в Swift после конвертации из Objective-C. Может кто-нибудь помочь мне решить эту проблему?

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

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Что вам нужно сделать, это прочитать об опциях в Swift.

Разработчик Apple

Tutorialpoint

Вот несколько хороших ссылок для чтения. Есть 2 основных способа достичь желаемого.

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) может быть необязательным, что означает, что он может содержать нулевые значения. Используя if, давайте удостоверимся, что внутри блока if значение бренда никогда не равно нулю.

Но, допустим, мы хотим использовать его не внутри блока, а в любом месте функции. Тогда мы можем использовать guard.

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

        //brand is nil here
        //brand.logoImageName is nil here
    }
0 голосов
/ 01 мая 2018

Таким образом, вы можете сделать это: (как я вижу, вы используете brand.logoImageName, поэтому вы должны использовать этот способ)

if let brand =  GymBrand.brandForName(name:self.gym.brand) as? GymBrand, let _ = brand.logoImageName as? String{
            //brand is never nil here
            //brand.logoImageName is never nil here
        } else {

        }
0 голосов
/ 01 мая 2018

Истинное лицо вашего кода в swift таково:

if let brand =  GymBrand.brandForName(name:self.gym.brand), brand.logoImageName != nil {

} else {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...