xcode - 在 Swift 中动态分配类型

标签 xcode swift

有人知道这是否可行或可取吗?

我想创建一个可以循环访问 Core Data 中的值的类。初始化类时,用户将指示每个属性/列的名称和类型。

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

但是,当我尝试为变量动态分配类型时出现问题,在下面的最后一段代码中可见(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    
    }

最佳答案

考虑像下面这样使用泛型:

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)    
} 

关于xcode - 在 Swift 中动态分配类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28299889/

相关文章:

xcode - 更改 ParentViewController 中 ChildViewController 中 UIPageControl 的点 - swift

Xcode 4 : Can't use Enable Guard Malloc due to dylib error for iPad simulator

ios - 无法从 Organizer 下载 dSYM

ios - 转换视频预览中每个像素的颜色 - Swift

string - 如何在 Swift 中将 "Index"转换为类型 "Int"?

swift - 在 Xcode 8 中将物理赋予 SKTileMapNode 的图 block

ios - 选择了错误的 iOS 配置文件

ios - APP进入后台后内存不会释放

ios - 将 UIWebView 迁移到 WKWebView

ios - 如果同一个文件中有 2 个 Appdelegate 类会发生什么