Xcode 6 - SWIFT - 访问数组时出错

Posted

技术标签:

【中文标题】Xcode 6 - SWIFT - 访问数组时出错【英文标题】:Xcode 6 - SWIFT - Error accessing an array 【发布时间】:2014-09-17 06:33:01 【问题描述】:
var files = ["Sound1", "Sound2", "Sound3", "Sound4", "Sound5"]
var fileLocation = NSString(string:  NSBundle.mainBundle().pathForResource("Sounds/" +  files[2] , ofType: "mp3")!)

我正在尝试创建一个播放随机声音的应用,但我收到此错误:

致命错误:在展开可选值时意外发现 nil

如果我指定了我想播放的声音,代码可以正常工作,但是当我尝试访问数组时会崩溃。

PS:完全没有拼写错误。

【问题讨论】:

您确定“Sound3.mp3”存在于“Sounds/”目录中吗?是否检查了创建的.app? 是的,如果我将 '"Sounds/" + files[2]' 替换为 '"Sounds/Sound3" ' 就可以了! 分配后的fileLocation是什么? 【参考方案1】:

很奇怪的情况,因为我无法重现相同的代码。

作为一般解决方案,如果您使用 pathForResource 的专用重载可能会有所帮助:

NSBundle.mainBundle().pathForResource(files[2], ofType: "mp3", inDirectory: "Sounds")

【讨论】:

删除文件夹名称确实有效,出于某种原因?!,谢谢 Nevs 我不明白为什么这会有所作为。 @ThomasW 我也没有!,每次我得到(!)和(?)的手时都会发生一些奇怪的事情!【参考方案2】:

试试这个:

 var fileLocation = NSString(string:  NSBundle.mainBundle().pathForResource("Sounds/\(files[2])", ofType: "mp3")

【讨论】:

之前这样做过但没有用,完全删除文件夹名称使其工作!

以上是关于Xcode 6 - SWIFT - 访问数组时出错的主要内容,如果未能解决你的问题,请参考以下文章

尝试将 IQKeyboardManager 与 Xcode 和 Swift 一起使用时出错

Swift 动态转换失败 - 尝试运行单元测试时出错

在 Swift 2 Xcode 7 Beta 4 中设置基于位置的提醒时出错

Xcode Swift:使用使用 pod (CocoaPods) 的框架时出错

Xcode 6 在用 Swift 编码进行预测时添加了两个点(句点)

下拉刷新时 UITableview 出错,所有数据重复。任何人都可以帮助使用 Swift 3 , Xcode 8