参考 Bundle 中的音频文件,Xcode 看到“使用未解决的标识符问题”

Posted

技术标签:

【中文标题】参考 Bundle 中的音频文件,Xcode 看到“使用未解决的标识符问题”【英文标题】:Referring to an audio file in Bundle, Xcode sees 'Use of unresolved identifier issue' 【发布时间】:2017-12-06 05:11:27 【问题描述】:

在阅读有关“使用未解决的”标识符问题 (example) 的(许多)问题后,答案通常似乎是添加一个类,然后确保使用 File Inspector 将其作为目标。

我不是想创建一个新类——我想使用 AVAudioPlayer 来定位 Bundle 中的 MP3 文件:

//5 -
var songPlayer = AVAudioPlayer()

//6 -
func prepareSongAndSession() 

    do 
        //7 - Insert the song from our Bundle into our AVAudioPlayer
        songPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "03 Smile", ofType: "mp3")!))

Xcode 将最后一行标记为:Unresolved identifier 'Bundle'。我不明白为什么,因为我理解 Bundle 充当目录。

最后,我想也许当我拖动文件时,MP3 没有将自身复制到目录中。转到根文件 > 构建阶段后,我已确认该文件已在“复制捆绑资源”中列出。

我错过了什么吗?

Xcode 7.3 和 Swift 2.2。

【问题讨论】:

您使用的是哪个版本的 Xcode 和 Swift?你导入Foundation了吗? Xcode 7.3 和 Swift 2.2 版(通过终端)。我还在该文件中在class ViewController: UIViewController 之前导入import AVFoundation 你知道 Swift 2 已经非常过时了吗?此时你真的,真的需要使用 Xcode 9 和 Swift 4。但除此之外,URLBundle 仅在 Swift 3 中可用。在 Swift 2 中,您需要使用 NSURLNSBundle。但是,请帮自己一个大忙,现在就升级。使用 Swift 2 是在浪费时间。 感谢@rmaddy -- 几年后我又重新开始使用它,并没有意识到 Swift 2 已经过时了......感谢您的帮助。 【参考方案1】:

当前的 Apple 文档适用于 Swift 4。 只需将 Xcode 更新到最新的稳定版本,您就可以根据文档进行编码,而不会出现未定义引用 Bundle 的错误。

另请注意,Xcode 9 将在 2018 年 7 月的某个时候强制发布到 iTunes Connect。

【讨论】:

以上是关于参考 Bundle 中的音频文件,Xcode 看到“使用未解决的标识符问题”的主要内容,如果未能解决你的问题,请参考以下文章

将 Bundle 中的文件显示到 UITableView - iOS

Xcode:多个音频文件,单个按钮

修改 Xcode 的 project.pbxproj 中的 PRODUCT_BUNDLE_IDENTIFIER

在xcode copy bundle resources 在哪

Xcode 6 / iOS 8 Simulator Data 和 Bundle 文件夹脚本

我录制的音频文件在哪里?它在 xcode 中的默认类型是啥?