Ios 如何在Swift中将类型作为参数传递

Ios 如何在Swift中将类型作为参数传递,ios,iphone,swift,protocols,Ios,Iphone,Swift,Protocols,我有一个对象字典,我想做的是遍历数据集并返回符合给定协议的对象数组。我对传递所需协议的语法有问题: func getObjectsThatConformTo<T>(conformance: T.Type) -> [AnyClass]{ var returnArray: [AnyClass] = [] for(myKey, myValue) in allCreatedObjects{ if let conformantObject = myValue as? co

我有一个对象字典,我想做的是遍历数据集并返回符合给定协议的对象数组。我对传递所需协议的语法有问题:

func getObjectsThatConformTo<T>(conformance: T.Type) -> [AnyClass]{
  var returnArray: [AnyClass] = []
  for(myKey, myValue) in allCreatedObjects{
    if let conformantObject = myValue as? conformance{
      returnArray.append(conformantObject)
    }
  return returnArray
}
func getobjectsthatcomformto(一致性:T.Type)->[AnyClass]{
var returnArray:[AnyClass]=[]
对于所有CreatedObject中的(myKey,myValue){
如果让conformantObject=myValue作为一致性{
returnArray.append(共形对象)
}
返回数组
}
我看到的错误是“一致性”不是一种类型


感谢您的帮助和时间

虽然您可以编写一个通用的ed方法来过滤数组并查看数组中的哪些内容是给定的类型,但这个问题需要使用
过滤器

例如:

var dict: [String: AnyObject] = [:]
// Populate dict with some values
let strings = dict.values.filter { return $0 is String }
包装在采用以下类型的函数中:

func getObjectsThatConformTo<T>(array: [Any], conformance: T.Type) -> [T]? {
    return array.filter { return $0 is T } as? [T]
}
func getobjectsthatcommito(数组:[Any],一致性:T.Type)->[T]{
return array.filter{return$0是T}作为?[T]
}
说明: Filter是数组上的一个方法,它根据测试返回数组的子集。在这种情况下,我们的测试是“元素是字符串吗?”Filter方法接受一个带有一个参数的闭包,即上面提到的要测试的元素,参数为$0


阅读这里的过滤器:

我认为这应该是可行的:

func getObjectsThatConformToType<T>(type:T.Type) -> [T]{
    var returnArray: [T] = []
    for(myKey, myValue) in allCreatedObjects{
        if let comformantModule = myValue as? T {
            returnArray.append(comformantModule)
        }
    }
    return returnArray
}
func getObjectsThatConformToType(类型:T.type)->[T]{
var returnArray:[T]=[]
对于所有CreatedObject中的(myKey,myValue){
如果让comformantModule=myValue为?T{
returnArray.append(comformantModule)
}
}
返回数组
}

What is
leftNavCompliant
oops这是我忘了制作genaric的东西对于这个例子,它应该是我的if-let对象,我将编辑。所以在这个例子中,你现在通过sting进行过滤,我希望能够传入sting类型,因为我不知道我想通过什么进行过滤!