0

我有一个接收值的函数,然后我将其发送到 NSUserDefaults 以存储在其属性列表中。

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

如何设置通用约束,以便该值只能是属性列表接受的可能类型之一?

我在想类似的事情:

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

这当然行不通。

4

1 回答 1

1

您可以为要允许保留的所有类型创建自定义协议:

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
}
于 2016-10-27T21:15:16.363 回答