在Swift中动态分配类型

时间:2015-02-03 13:16:20

标签: xcode swift

有人知道这是可行的还是可取的?

我想创建一个可以循环核心数据中的值的类。初始化类时,用户将指出每个属性/列的名称和类型。

我希望我能以下面指出的方式为变量赋值。

但是,当我尝试动态地为变量分配类型时会出现问题,在下面的代码的最后一位( as col.type )中可见。我知道这可能看起来有点笨拙,但我正在尝试与任何事情进行沟通我想做什么。

课程定义:

class TargetColumnDetail {
    var columnNameCore:String!
    var columnNameParse:String!
    var type:NSObject.Type!

    init(){}
}

初始化:

var col: TargetColumnDetail = TargetColumnDetail()
col.columnNameCore = "name"
col.columnNameParse = "name"
col.type = NSString.self

我的想象如何使用:

    for col:TargetColumnDetail in self.targetColumnDetails{
        var coreValue = coreDataObject.valueForKey(col.columnNameCore) as col.type    
    }

1 个答案:

答案 0 :(得分:0)

考虑使用类似于以下内容的泛型:

class TargetColumnDetail<T> {

    var columnNameCore:String!
    var columnNameParse:String!

    func valueForKey(coreDataObject:NSManagedObject)->T{

        return coreDataObject.valueForKey(col.columnNameCore) as T
    }

}

然后使用如下

for col:TargetColumnDetail in self.targetColumnDetails{
    var coreValue = col.valueForKey(coreDataObject)    
}