2016-10-24 2 views
2

Dateの拡張子に作成された静的メソッドがあります。 Objective-Cファイルでこのメソッドを呼び出そうとしています。 「セレクタメソッド名の既知のクラスがありません」というエラーが表示されます。 Objective-Cの拡張子で定義されたobjective-cで静的メソッドを使用する方法

NSString *dateString = [NSDate getDefaultFormattedDateTimeStringFromDate:[NSDate date]]; 

答えて

2

struct DateでSWIFT 3.0で

extension Date { 
    static func getDefaultFormattedDateStringFromDate(_ validToDate:Date) -> String? { 

    } 
} 

ファンデーションタイプ NSDateに "スイフトオーバーレイ型"(Swift 3: Date vs NSDate?を比較)である:詳細は

詳細Objective-Cには未知である。

あなたはObjective-Cのから使用可能にするため にNSDateへの拡張を定義する必要があります:

extension NSDate { 
    static func getDefaultFormattedDateStringFromDate(_ validToDate: Date) -> String? { 
     // ... 
    } 
} 

これは

@interface NSDate 
+ (NSString * _Nullable)getDefaultFormattedDateStringFromDate:(NSDate * _Nonnull)validToDate; 
@end 

ノートとしてのObjective-Cにインポートされていますパラメータおよび戻り値の型(Date,String)は、基底型(NSDate,NSString)に自動的に橋渡しされます。


すべてこの

はインスタンスメソッド対静的(タイプ)とは無関係であり、かつ あなたのケースでは、インスタンス メソッドを定義するために、より「自然」であるかもしれない:

extension NSDate { 
    func defaultFormattedString() -> String? { 
     // ... 
    } 
} 

にインポートされます

@interface NSDate 
- (NSString * _Nullable)defaultFormattedString; 
@end 

と呼ばれるようなObjective-Cの
関連する問題