首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“NSError”不能转换为“AutoreleasingUnsafePointer<NSError?>”

“NSError”不能转换为“AutoreleasingUnsafePointer<NSError?>”
EN

Stack Overflow用户
提问于 2014-07-09 06:16:57
回答 3查看 2.8K关注 0票数 2

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

代码语言:javascript
复制
var audioFileLocationUrl = NSBundle.mainBundle().pathForResource("midnight", ofType: "m4a")
var error: NSError
var audioPlayer = AVAudioPlayer()
audioPlayer = AVAudioPlayer(contentsOfURL: audioFileLocationUrl, error: error)
audioPlayer.prepareToPlay()

在线:

代码语言:javascript
复制
audioPlayer = AVAudioPlayer(contentsOfURL: audioFileLocationUrl, error: error)

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-09 06:28:06

编辑(有人向我指出,何时使用NSErrorPointer与何时使用NSError?)有明显的区别。以下是官方用语:

从“使用Swift与可可和客观-C.”

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

代码语言:javascript
复制
var writeError : NSError? 
AVAudioPlayer(contentsOfURL: audioFileLocationUrl, error: &writeError)
票数 4
EN

Stack Overflow用户

发布于 2014-07-09 06:21:25

试一试

代码语言:javascript
复制
var error :NSError?

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

如果检查失败,您将调用正确的方法并传入正确的对象类型。

收到此警告的原因是编译器找不到带有这些参数的init方法。

票数 1
EN

Stack Overflow用户

发布于 2014-07-09 06:23:24

更新:错误处理在Swift 2中发生了巨大变化。有关最新信息,请参阅文献资料

对我来说,这段代码产生的错误'NSError‘不能转换为这是因为该方法试图通过引用获取一个错误,这样它就可以“写”回您的局部变量。在Obj C,这看起来像(NSError **)。(有趣的事实:AutoreleasingUnsafePointer<NSError?>在Swift中被别名为NSErrorPointer。)

实际上,如果您单击AVAudioPlayer查看它的声明,您将发现init方法定义为

代码语言:javascript
复制
init(contentsOfURL url: NSURL!, error outError: AutoreleasingUnsafePointer<NSError?>)

因此,你必须:

  1. 使用NSError? (即Optional<NSError>)变量,因为错误可能是nil
  2. 使用前缀&操作符通过引用传递错误。 变量错误: NSError?audioPlayer = AVAudioPlayer(contentsOfURL: audioFileLocationUrl,error:&error)

有关更多信息,请参阅“使用Swift与Cocoa和Objective”中的错误报告

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24646560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档