Swift Int的扩展需要显式调用init

Swift Int的扩展需要显式调用init,swift,Swift,我正在用自己的init创建Int的扩展,但是我不能隐式地使用init。谁能解释一下原因吗?但是,我可以显式地调用init,如下所示 extension Int { init?(fromHexString: String) { let HexRadix:Int = 16 let DigitsString = "0123456789abcdefghijklmnopqrstuvwxyz" let digits = DigitsString

我正在用自己的init创建Int的扩展,但是我不能隐式地使用init。谁能解释一下原因吗?但是,我可以显式地调用init,如下所示

extension Int {

    init?(fromHexString: String) {
        let HexRadix:Int = 16
        let DigitsString = "0123456789abcdefghijklmnopqrstuvwxyz"

        let digits = DigitsString
        var result = Int(0)
        for digit in fromHexString.lowercaseString {
            if let range = digits.rangeOfString(String(digit)) {
                let val = Int(distance(digits.startIndex, range.startIndex))
                if val >= Int(HexRadix) {
                    return nil
                }
                result = result * Int(HexRadix) + val
            } else {
                return nil
            }
        }
        self = result
    }


}

let firstString = "ff"

//This works
let parsedInt:Int = Int.init(fromHexString: firstString)!
println("\(parsedInt)")

//But this does not ; Error: Int is not identical to Int? Why??
let parsedInt1:Int = Int(fromHexString: firstString)!
println("\(parsedInt1)")

您是否可以添加缺少的定义(例如,
digitstring
)以便示例能够编译?让HexRadix:Int=16让digitstring=“0123456789abcdefghijklmnopqrstuvwxyz”在PlayGround中像一个符咒一样工作您正在运行哪个版本的Xcode?对我来说似乎还可以,但有时玩得不好:)。请放入swift文件并编译。