【问题标题】:Cannot invoke 'sizeof' with an argument list of type '([Double])'无法使用类型为“([Double])”的参数列表调用“sizeof”
【发布时间】:2015-07-08 01:29:20
【问题描述】:

我在调用 sizeof 时收到此错误消息。

/Users/MNurdin/Documents/iOS/xxxxx/ViewController.swift:46:58: 无法使用“([Double])”类型的参数列表调用“sizeof”

我的代码

let wts: [Double]  = [ -30 , 20 , 20 ]
let weights: NSData = NSData(bytes: wts, length: sizeof(wts))

我做错了什么?

【问题讨论】:

  • 与 C 中的问题相同,使用 sizeof (double*) 不会返回您将返回的内容,但谢天谢地 Swift 拒绝这样做。
  • 我也在使用 withUnsafeMutablePointer() 但不成功..
  • count怎么样?
  • 计数?计数是什么意思?

标签: swift


【解决方案1】:

不要在实例上使用sizeof(),它需要一个类型。请改用sizeofValue()

let wts: [Double] = [-30, 20, 20]
let weights = NSData(bytes: wts, length: sizeofValue(wts) * wts.count)

请注意,您需要将 sizeofValue 的值乘以数组的计数,因为它将返回数组中每个元素的大小,而不是整个数组的大小。

【讨论】:

    【解决方案2】:

    如果您要获取数组的总字节大小,则需要知道有多少元素,然后将其乘以 double 的大小。

    let wts: [Double] = [-30, 20, 20]
    let sizeOfArray = wts.count * sizeof(Double) //sizeof requires a Type [Double] is not a type
    let weights: NSData = NSData(bytes: wts, length: sizeOfArray
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多