【问题标题】:how to find maximum value of UnsafeMutablePointer<Float> with bufferSize of data type UInt32 in swift?如何在swift中找到数据类型为UInt32的bufferSize的UnsafeMutablePointer<Float>的最大值?
【发布时间】:2016-07-24 20:38:27
【问题描述】:

我是 swift 新手,正在从事一个我必须可视化音频波的项目! 我正在使用 EZAudio pod 在屏幕上绘制波形的位置使用函数 UpdatePlot 并在参数中传递 UnsafeMutablePoiter> 我希望每个 UnUnsafeMutablePointer 中的最大值找到图中的最高波长

buffer[0]//with a bufferSize UInt32

我想在那个 buffer[0] 数组中找到最大值!

请帮忙!!! p.s: 先谢谢了

【问题讨论】:

    标签: ios swift xcode7 cocoapods nspointerarray


    【解决方案1】:

    对于数组缓冲区[]

    斯威夫特 3:

    buffer.max()
    

    斯威夫特 2:

    buffer.maxElement()
    

    【讨论】:

      【解决方案2】:

      这两行太混乱了:

      buffer[0]//with a bufferSize UInt32
      

      我想在那个 buffer[0] 数组中找到最大值!

      UnsafeMutablePointer&lt;Float&gt;buffer 本身或buffer[0] 是哪个? buffer 是 Swift Array 吗?

      我假设buffer 的类型是UnsafeMutablePointer&lt;Float&gt;

      手动:

      func myMax(buf: UnsafePointer<Float>, count: UInt32) -> Float? {
          guard case let bufCount = Int(count) where count > 0 else {return nil}
          var max = -Float.infinity
          for i in 0..<bufCount {
              if buf[i] > max {
                  max = buf[i]
              }
          }
          return max
      }
      

      像这样使用它:

      if let maxValue = myMax(buffer, count: bufferSize) {
          //Use the maximum value
          print(maxValue)
      } else {
          //No maximum value when empty
          print("empty")
      }
      

      如果你想使用 Swift 库,你可以写 myMax 为:

      func myMax(buf: UnsafePointer<Float>, count: UInt32) -> Float? {
          return UnsafeBufferPointer(start: buf, count: Int(count)).maxElement()
      }
      

      【讨论】:

        猜你喜欢
        • 2015-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        相关资源
        最近更新 更多