SwiftでObjective-Cのクラスを使う際にNSStringDrawingOptionsがExpected a typeというエラーになってしまう


SWiftで行の高さを、文字数によって動的に変更したいと思っております。  
対象はiOS7とiOS8のどちらにも対応予定です。

そこで以下の様なコードを書いたところエラーがでて使えませんでした。  
どちらか片方のオプションを指定して場合は問題ないのですが、今回は２つとも必要だと思われます。

let options:NSStringDrawingOptions =
(NSStringDrawingOptions.UsesLineFragmentOrigin |
NSStringDrawingOptions.UsesFontLeading)

このエラーについて調べたところどうもiOS7の不具合との情報を見かけました。  
それでこのコードの部分だけをObjective-Cのクラスとしようとしたところ、  
NSStringDrawingOptionsがExpected as typeというエラーになってしまうのですが通す方法はあるのでしょうか？

Bridging-Headerは作り、他のクラス（SDWebImage等）が無事動作していますのでその点は問題ないかと思ってます。

よろしくお願いいたします。

コードは以下になります。

DrawingOptions.h

[code]

    #import <Foundation/Foundation.h>
    @interface StringDrawingOptions : NSObject
    + (NSStringDrawingOptions)combine:(NSStringDrawingOptions)option1 with:(NSStringDrawingOptions)option2;
    @end
    
[/code]

DrawingOptions.m

[code]

    #import "StringDrawingOptions.h"
    @implementation StringDrawingOptions
    + (NSStringDrawingOptions)combine:(NSStringDrawingOptions)option1 with:(NSStringDrawingOptions)option2
    {
        return (option1 | option2);
    }
    @end
    
[/code]




`Expected a
type`というエラーメッセージはDrawingOptions.hのところで出ていると思いますので、DrawingOptions.hのimport文に`#import
<UIKit/UIKit.h>`を足してください。

`NSStringDrawingOptions`はUIKitによる拡張なので、UIKitをインポートしないと、NSStringDrawingOptionsの定義が参照できません。

次に、StringDrawingOptionsが必要になるのはSwiftのバグ（厳密には`NSStringDrawingOptions`の定義がおかしい）なので、

[code]

    let options:NSStringDrawingOptions = (NSStringDrawingOptions.UsesLineFragmentOrigin | NSStringDrawingOptions.UsesFontLeading)
    
[/code]

の箇所を

[code]

    let options = StringDrawingOptions.combine(.UsesLineFragmentOrigin, with: .UsesFontLeading)
    
[/code]

と、StringDrawingOptionsで定義した、Objective-Cのメソッドを使ってビットマスクを計算するようにします。




`Expected a
type`というエラーメッセージはDrawingOptions.hのところで出ていると思いますので、DrawingOptions.hのimport文に`#import
<UIKit/UIKit.h>`を足してください。

`NSStringDrawingOptions`はUIKitによる拡張なので、UIKitをインポートしないと、NSStringDrawingOptionsの定義が参照できません。

次に、StringDrawingOptionsが必要になるのはSwiftのバグ（厳密には`NSStringDrawingOptions`の定義がおかしい）なので、

[code]

    let options:NSStringDrawingOptions = (NSStringDrawingOptions.UsesLineFragmentOrigin | NSStringDrawingOptions.UsesFontLeading)
    
[/code]

の箇所を

[code]

    let options = StringDrawingOptions.combine(.UsesLineFragmentOrigin, with: .UsesFontLeading)
    
[/code]

と、StringDrawingOptionsで定義した、Objective-Cのメソッドを使ってビットマスクを計算するようにします。

