20

いくつかのカテゴリ メソッドを Swift ファイルにインポートしようとしていますが、うまくいきません。

ios-Bridging-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

実際、カテゴリは次のように 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")

ただし、ベータ版ソフトウェアではオートコンプリートにまだバグがある可能性があります。

于 2014-06-05T15:55:39.087 に答える
25

Objective-C カテゴリを Swift で直接使用できます。これは、String などのブリッジされたクラスの一部にとって非常に興味深いものです。Objective-C のカテゴリで NSString を拡張すると、Swift から (文字列で直接!) アクセスできます。

これを行う方法は、Swift プロジェクトで「ブリッジ ヘッダー」を作成することです。

完全な手順はこちら.

それの短いです:

  1. #import他のすべてのステートメントを含む .h ヘッダー ファイルを (Objective-C で)作成します。
  2. そのファイルへのパスをObjective-C Bridging Headerビルド設定に入れます
  3. Swift ファイルにブリッジング ヘッダーをインポートする必要はありません。すでにそこにある
于 2014-12-21T17:14:35.630 に答える