20

我正在尝试将一些类别方法导入到我的 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)

4

2 回答 2

33

Actually, your category is transtlated to Swift as follows:

extension UIColor {

    init(hex hexInt: Int) -> UIColor

    init(hexString: String) -> UIColor

}

And because of that, you should be using:

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

let color = UIColor(hexString: "ffffff")

Autocompletion may still be buggy in the beta software, though.

于 2014-06-05T15:55:39.087 回答
25

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

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

完整的说明在这里

它的短处是:

  1. #import制作一个包含所有其他语句的 .h 头文件(在 Objective-C 中)
  2. 将该文件的路径放入Objective-C Bridging Header您的构建设置中
  3. 无需在 Swift 文件中导入桥接头。它已经在那里
于 2014-12-21T17:14:35.630 回答