Swift警告 - 从'Builtin.Int32'转换为'Builtin.Int8'时整数溢出

jam*_*rez 3 int warnings swift

我收到以下警告,没有提到它发生的行:

warning: integer overflows when converted from 'Builtin.Int32' to 'Builtin.Int8'
Run Code Online (Sandbox Code Playgroud)

此代码中出现警告:

extension NSPoint {

func ToString() -> String {
    return "(" + self.x.description + "," + self.y.description + ")"
}

func Plus(toBeAdded : NSPoint) -> NSPoint {
    return NSPoint(x: self.x + toBeAdded.x, y: self.y + toBeAdded.y)
}

func Minus(toBeMinused : NSPoint) -> NSPoint {
    return NSPoint(x: self.x - toBeMinused.x, y: self.y - toBeMinused.y)
}

static func fromScalar(scalar : Int) -> NSPoint {
    return NSPoint(x: scalar, y: scalar)
}
}
Run Code Online (Sandbox Code Playgroud)

NSPoint初始化程序需要Int,所以我不会立即知道为什么会这样 - 任何想法?

Mar*_*n R 5

这看起来像一个bug,是由description方法中的ToString()方法引起的 .已发生相同的警告

let x = CGFloat(12.0)
let s = x.description
Run Code Online (Sandbox Code Playgroud)

作为解决方法,您可以使用字符串插值代替:

func ToString() -> String {
    return "(\(self.x),\(self.y))"
}
Run Code Online (Sandbox Code Playgroud)

要不就

func ToString() -> String {
    return "\(self)"
}
Run Code Online (Sandbox Code Playgroud)

这给出了相同的结果.