我创建了一个小的struct
来保存版本号。Swift:不能在数组中存储不安全的指针
现在我搜索了一个紧凑的方法来将数字直接解析到结构体的变量中。我试图实现这种方式:
struct Version {
var major: Int = 0
var minor: Int = 0
var revision: Int = 0
init(string: String) {
let components = string.componentsSeparatedByString(".")
if 1...3 ~= components.count {
var targets = [&major, &minor, &revision]
for index in 0...2 {
var scanner = NSScanner(string: components[index])
if (!scanner.scanInteger(target[index])) {
major = 0
minor = 0
revision = 0
return
}
}
}
}
}
但我收到此错误信息:
Type '[inout Int]' of variable is not materializable
我不明白这个错误。有没有办法用这种方式来实现它,使用一些指向成员变量的指针?
更新
最后我没有使用不安全的指针。这是我最后的实现:
init(string: String) {
let components = string.componentsSeparatedByString(".")
if 1...3 ~= components.count {
var values = [0, 0, 0]
for index in 0..<components.count {
var scanner = NSScanner(string: components[index])
if (!scanner.scanInteger(&values[index])) {
return
}
}
major = values[0]
minor = values[1]
revision = values[2]
}
}
太棒了!非常感谢你!奇怪为什么'.append'起作用,但'= [&major,...]'中的用法不适用。 – Flovdis 2014-10-10 15:46:43