参考 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。但除此之外,URL
和 Bundle
仅在 Swift 3 中可用。在 Swift 2 中,您需要使用 NSURL
和 NSBundle
。但是,请帮自己一个大忙,现在就升级。使用 Swift 2 是在浪费时间。
感谢@rmaddy -- 几年后我又重新开始使用它,并没有意识到 Swift 2 已经过时了......感谢您的帮助。
【参考方案1】:
当前的 Apple 文档适用于 Swift 4。
只需将 Xcode 更新到最新的稳定版本,您就可以根据文档进行编码,而不会出现未定义引用 Bundle
的错误。
另请注意,Xcode 9 将在 2018 年 7 月的某个时候强制发布到 iTunes Connect。
【讨论】:
以上是关于参考 Bundle 中的音频文件,Xcode 看到“使用未解决的标识符问题”的主要内容,如果未能解决你的问题,请参考以下文章
将 Bundle 中的文件显示到 UITableView - iOS
修改 Xcode 的 project.pbxproj 中的 PRODUCT_BUNDLE_IDENTIFIER
在xcode copy bundle resources 在哪