Swift2:Int64和Int32的数学运算?

时间:2016-02-28 21:30:24

标签: math swift2

在Swift中处理涉及Int64和Int32的操作的正确方法是什么?例如,以下失败,“二进制运算符'/'不能应用于'Int32'和'Int64'类型的操作数”:

let i64 : Int64 = 1
let i32 : Int32 = 1
let val = i32 / i64

这里的简单方案有效:

let i64 : Int64 = 1
let i32 : Int32 = 1
let val = Int64(i32) / i64

现在我的“真实世界”案例失败了,“无法使用类型为'(Int32)''的参数列表调用类型'Int64'的初始值设定项”:

let timedMetadataGroup : AVMutableTimedMetadataGroup
// timedMetadataGroup is initialised with values from another function
let startSecs = timedMetadataGroup.timeRange.start.value.value / Int64(timedMetadataGroup.timeRange.start.timescale.value)

纯情况与上述情况有何不同?我该如何解决这个问题?是否有多种类型的Int32或Int64?

2 个答案:

答案 0 :(得分:1)

您正在访问

timedMetadataGroup.timeRange.start.timescale.value

timescale的类型为CMTimeScale,它是Int32的别名。所以我认为你应该停下来进行时间刻度并删除.value部分。

let startSecs = timedMetadataGroup.timeRange.start.value / Int64(timedMetadataGroup.timeRange.start.timescale)

答案 1 :(得分:0)

Swift不允许使用不同类型的值进行数学运算。