2016-10-27 5 views
0

私は値を取り込む関数を持っています。それをNSUserDefaultsに送ってプロパティリストに格納します。ジェネリック関数をフィルタリングする方法、または複数のオプションを持つ方法はありますか?

func store<T>(value: T, key: String) -> Bool { 
    // send key, value to NSUserDefaults 
} 

値がプロパティリストで受け入れられるタイプの1つにしかならないように、汎用制約を設定するにはどうすればよいですか?もちろん動作しません

func store<T>(value: T, key: String) -> Bool where T:NSString OR T:NSData OR T:Etc{ 
    // send key, value to NSUserDefaults 
} 

私のようなものを考えていました。

+0

は、あなたは、単にテストするガード/ else文を使用することができなかった、成功/失敗を示しますタイプ? – dfd

+0

関数が間違った型で使用されている場合、コンパイラエラーが欲しいです – Steals

答えて

1

あなたが存続できるようにしたいすべてのタイプのカスタムプロトコルを作成することができます。あなたのBoolリターンを想定し

protocol CustomProtocol {} 

extension NSString: CustomProtocol {} 
extension NSData: CustomProtocol {} 
// etc. 


func store<T>(value: T, key: String) -> Bool where T: CustomProtocol { 
    // send key, value to NSUserDefaults 
} 
関連する問題