2016-05-20 10 views
0

私はアプリケーションをObjective Cから迅速に移行しようとしています。 私は2つのObjective Cカテゴリを持っていました。 Swiftには「拡張機能」があるので、作成しました。しかし、私は、コードの下には、既存のObjective C.SwiftクラスとObjective-Cクラスの拡張を定義する

からそれを呼び出すことができないのですか、いくつかは、コンパイル・エラー

No visible @interface for 'NSString' declares the selector 'myCategory' 

拡張クラス

import Foundation 


    extension String { 

     func myCategory() -> String { 

      return "I am From Swift"; 

     } 


    } 

私のViewController

#import <TestProject-Swift.h> 


@interface TestViewController() 

@end 

@implementation TestViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    NSString *str = @"Testing"; 

    NSLog(@"Here is result %@", [str myCategory]); 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

を与えますスウィフト授業でもどうやったらうまくいくのでしょうか? 私は上記の拡張ファイルのためにブリッジヘッダーファイルを作成しました。

編集: 私は「公開」を試みましたが、機能していません。

+0

「公開」にしますか? – jtbandes

+0

私はすでに試したことがありますが運はありません – Swapnil

答えて

1

あなたは正しいアイデアがありますが、SwiftのStringとココアのNSStringは2種類あります。あなたがこれを知らない理由は、魔法のおかげで、スウィフトはStringNSStringメソッドを呼び出すことができて嬉しいです。拡張子をStringの代わりにNSStringにすると、両方のコンテキストで機能するはずです。

関連する問題