error-handling - “NSError”无法转换为 'AutoreleasingUnsafePointer<NSError?>'

标签 error-handling swift avaudioplayer

在我的 iOS 应用程序中,我需要播放声音。我有以下代码:

var audioFileLocationUrl = NSBundle.mainBundle().pathForResource("midnight", ofType: "m4a")
var error: NSError
var audioPlayer = AVAudioPlayer()
audioPlayer = AVAudioPlayer(contentsOfURL: audioFileLocationUrl, error: error)
audioPlayer.prepareToPlay()

上线:

audioPlayer = AVAudioPlayer(contentsOfURL: audioFileLocationUrl, error: error)

我有错误:找不到接受提供的参数的“init”重载

最佳答案

编辑(有人向我指出何时使用 NSErrorPointer 和何时使用 NSError 有明显的区别?。这是官方的说法:

摘自“将 Swift 与 Cocoa 和 Objective-C 结合使用。”

“当需要报告错误原因时,可以向函数添加一个 NSErrorPointer 类型的 NSError out 参数。这种类型大致相当于 Objective-C 的 NSError **,具有额外的内存安全性和可选类型。您可以使用前缀 & 运算符将对可选 NSError 类型的引用作为 NSErrorPointer 对象传递,如下面的代码 list 所示。

var writeError : NSError? 
AVAudioPlayer(contentsOfURL: audioFileLocationUrl, error: &writeError)

关于error-handling - “NSError”无法转换为 'AutoreleasingUnsafePointer<NSError?>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24646560/

相关文章:

Swift playground 和 LeetCode OJ

swift - Xcode 7 和 swift 2.0 的新服务堆栈客户端无法成功编译它生成的代码?

ios - 有什么方法可以在 iOS 中使用 swift 将用户名和密码保存在设备中,这与 Android 中的偏好相同?

iphone - iphone-AVAudioPlayer重叠

Excel VBA - 当被调用的方法已经调用了另一个方法时,将控件返回给调用方法

rest - 使用Micronaut进行客户端错误处理

iphone - 为什么我必须分配一个对象并在 Obj-C 中设置我的实例变量 = 该对象?

ios - 在 iOS13 中重新分配 AVAudioPlayer 实例会导致 BAD_ACCESS 运行时错误

ios - Swift:CoreData – ManagedObjectContext-错误

ios - 单元测试错误抛出在 block 中