Tag: 迅速扩展

在swift中,Self.Type不能直接转换为扩展名为Objective-c类的AnyClass

我试图创build结构方法来创build正确的笔尖名称的UIViewController(以修复iOS8默认的初始化问题)。 为此,我添加了扩展名: extension UIViewController { class func create() -> Self { if #available(iOS 9.0, *) { return self.init() } else { let clsName = NSStringFromClass(self).componentsSeparatedByString(".").last! return self.init(nibName: clsName, bundle: nil) } } } 然而,编译器问题错误: Cannot convert value of type 'Self.Type' to expected argument type 'AnyClass' (aka 'AnyObject.Type') NSStringFromClass(self) Cannot convert value of type 'Self.Type' to […]

在Swift扩展中处理类初始化失败

我正在重写一个Objective C类别到Swift: @implementation UIImage (Extra) + (UIImage *)validImageNamed:(NSString *)name { UIImage *image = [self imageNamed:name]; NSAssert(image, @"Unable to find image named '%@'", name); return image; } 这要求作为一个方便的初始化,但我怎么能检查指定的初始化self.init(命名:)成功? extension UIImage { convenience init(validateAndLoad name: String!) { self.init(named: name) // need to assert here if self.init fails } 当self.init(named :)调用失败时,扩展的init将停止执行。 我已经尝试创build一个UIImage实例并将其分配给自己,但是这不能编译。 当然,在ObjC版本中可以使用一个辅助方法: extension UIImage { class func […]