【发布时间】:2014-06-22 20:36:23
【问题描述】:
我正在编写一些 Swift 代码,其中我有一个包含泛型类型的数组:
let _data: Array<T> = T[]()
稍后在我的代码中,我需要确定存储在数组中的类型。我尝试使用documentation 中描述的类型转换技术(尽管它没有用于泛型)。
switch self._data {
case let doubleData as Array<Double>:
// Do something with doubleData
case let floatData as Array<Float>:
// Do something with floatData
default:
return nil // If the data type is unknown return nil
}
上面的switch语句在编译时出现如下错误:
- 在发射 IR SIL 函数时 @_TFC19Adder_Example___Mac6Matrix9transposeUS_7Element__fGS0_Q__FT_GSqGS0_Q___ 用于 /code.viperscience/Adder/src/Adder 的“转置” 库/Matrix.swift:45:3 :0: 错误:无法执行 命令:分段错误:11:0:错误:快速前端 命令因信号而失败(使用 -v 查看调用) 命令 /Applications/Xcode6-Beta2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift 退出代码 254 失败
有人知道我如何将我的通用数据转换为它的实际类型以便采取具体行动吗?
【问题讨论】:
-
尝试使用
as?但我认为在你的情况下它是一个编译器错误......报告它! -
我尝试了可选的,但没有成功。我同意它可能是一个编译器错误。这不是我见过的与泛型有关的第一个......