Функция класса в быстром расширении (категории)
Можно ли определить функцию класса в расширении в swift, как и в категории objective-C, вы также можете определить функции класса?
Пример в objective-c
@implementation UIColor (Additions)
+ (UIColor)colorWithHexString:(NSString *)hexString
{
// create color from string
// ... some code
return newColor;
}
@end
что было бы эквивалентно в swift?
Ответы
Ответ 1
Да, это возможно и очень похоже, главное отличие в том, что расширения Swift не называются.
extension UIColor {
class func colorWithHexString(hexString: String) -> UIColor {
// create color from string
// ... some code
return newColor
}
}
Ответ 2
Для записи. Вот код для решения выше:
import UIKit
extension UIColor {
convenience init(hexString:String) {
// some code to parse the hex string
let red = 0.0
let green = 0.0
let blue = 0.0
let alpha = 1.0
self.init(red:red, green:green, blue:blue, alpha:alpha)
}
}
Теперь я могу использовать:
скор:
let clr:UIColor = UIColor(hexString:"000000")
и теоретически я должен иметь возможность использовать в objective-c:
UIColor *clr = [UIColor colorWithHexString:@"000000"];