【问题标题】:Using CFArrayGetValueAtIndex in Swift with UnsafePointer (AUPreset)在带有 UnsafePointer (AUPreset) 的 Swift 中使用 CFArrayGetValueAtIndex
【发布时间】:2016-07-20 07:42:44
【问题描述】:

我的问题很简单,但很棘手。我想写这一行

AUPreset *aPreset = (AUPreset*)CFArrayGetValueAtIndex(mEQPresetsArray, indexPath.row);

在斯威夫特。诀窍是返回值是UnsafePointer<Void>

【问题讨论】:

  • let aPreset = CFArrayGetValueAtIndex(mEQPresetsArray, indexPath.row) as AUPreset
  • 目前最好的方法是将 CFArray 转换为 NSArray 并从那里开始。
  • @PhuDuy 从 UnsafePointer 转换为 AUPreset 是不可能的

标签: swift core-audio core-foundation


【解决方案1】:

这是 Swift 4 版本

let aPreset = unsafeBitCast(CFArrayGetValueAtIndex(mEQPresetsArray, indexPath), to: AUPreset.self)

【讨论】:

    【解决方案2】:

    你试过了吗?:

        let aPreset = UnsafePointer<AUPreset>(CFArrayGetValueAtIndex(mEQPresetsArray, indexPath.row))
    

    【讨论】:

    • 用这个表达式我没有得到一个有效的 APreset 对象。
    • @Vanya, AUPreset 不是对象类型。它是 C-struct 并作为 Swift 结构导入。
    • 好的,抱歉 SWIFT 结构,但是当我在这个表达式中使用“aPreset.memory”时,我确实得到了一个 AUPreset 结构。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    相关资源
    最近更新 更多