在Swift中使用Objective-C类的正确方法是什么?

时间:2014-06-05 15:46:37

标签: swift xcode6

我试图将一些类别方法导入到我的Swift文件中而没有任何运气。

IOS-桥接-Header.h:

#import "UIColor+Hex.h"

的UIColor + Hex.h

#import <UIKit/UIKit.h>

@interface UIColor (Hex)

+ (UIColor *)colorWithHex:(NSUInteger)hexInt;
+ (UIColor *)colorWithHexString:(NSString *)hexString;

@end

我希望自动填充能够显示UIColor(hexInt: NSUInteger)UIColor(hexString: String)

2 个答案:

答案 0 :(得分:32)

实际上,您的类别已转换为Swift,如下所示:

extension UIColor {

    init(hex hexInt: Int) -> UIColor

    init(hexString: String) -> UIColor

}

因此,你应该使用:

let color = UIColor(hex: 0xffffff) // instead of hexInt:

let color = UIColor(hexString: "ffffff")

尽管在测试版软件中,自动完成可能仍然存在问题。

答案 1 :(得分:24)

您可以直接在Swift中使用Objective-C类别。这对于某些桥接类(如String)非常有趣。使用Objective-C中的类别扩展NSString,然后您可以从Swift访问它(直接在String上!)

这样做的方法是在Swift项目中创建一个“桥接头”。

完整说明here

缺点是:

  1. 制作一个带有所有其他#import语句的.h头文件(在Objective-C中)
  2. 在构建设置
  3. 中将该文件的路径放在Objective-C Bridging Header
  4. 无需在Swift文件中导入桥接头。它已经存在了