Быстрое преобразование пользовательского типа в cgfloat

У меня есть свой маленький класс:

class EPPercent {
    init(_: CGFloat) {

    }
}

Теперь я хочу преобразовать элемент этого класса в CGFloat:

var percent: Any = 0
percent = EPPercent(100)
var toCGFloat = CGFloat(percent)

Это дает ошибку:

«Невозможно вызвать инициализатор для типа 'CGFloat' со списком аргументов типа '(EPPercent)'»

Как мне это сделать?

Спасибо за помощь ;)

Почему вы передаете CGFloat в инициализаторе EPPercent? Вы инициализируете свойство? Это неполный код для EPPercent?

Kamran 26.10.2018 08:53

Разместите весь код вашего класса EPPercent. Вы можете просто использовать собственный метод получения и установки переменной CGFloat.

Glenn Posadas 26.10.2018 08:59

@Glenn, это на самом деле весь код ... Мне просто нужен класс EPPercent, чтобы позже проверить, является ли он EPPercent

swift-lynx 26.10.2018 09:10
1
3
93
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать extension из CGFloat и создать собственный инициализатор, который принимает экземпляр EPPercent.

class EPPercent {
    let value: CGFloat
    init(_ value: CGFloat) {
        self.value = value
    }
}

extension CGFloat {
    init(_ percent: EPPercent) {
        self = percent.value
    }
}

var percent = EPPercent(100)
var toCGFloat = CGFloat(percent)

Сообщите мне, если у вас возникнут какие-либо проблемы.

@swiftlynx, если value является свойством public, вы можете просто получить к нему доступ как percent.value вместо того, чтобы делать CGFloat(percent)

Kamran 26.10.2018 09:27

Другие вопросы по теме