【问题标题】:"fatal error: Array index out of range swift"“致命错误:数组索引超出范围 swift”
【发布时间】:2015-10-02 07:26:04
【问题描述】:

代码是:

class Singleton {

    class var sharedInstance:Singleton {
        struct Static {
            static var instance:Singleton? = nil
            static var token:dispatch_once_t = 0
        }
        dispatch_once(&Static.token)
            {
                Static.instance = Singleton ()
        }
        return Static.instance!
    }

    var prayerArray = Array<PrayerSound>()

}

和:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        let prayer = PrayerSound(namazName: cellLabel, pathString: filePath!, checked: checked)
        sinleton.prayerArray[cellindex] = prayer

}

【问题讨论】:

  • 你的 –numberOfSectionsInTableView:–tableView:numberOfRowsInSection: 方法体中有什么?
  • dispatch_once 部分根本不需要。这种单例语法在幕后自动使用dispatch_once
  • 你是对的,但错误与单例无关 - 他有一个空数组。

标签: arrays swift generics


【解决方案1】:

您正在将prayerArray 初始化为一个空数组,其中包含var prayerArray = Array&lt;PrayerSound&gt;() 行。因此它没有元素。您必须将其初始化为具有一定长度,或者将项目附加到它。我认为你想要做的是初始化它以有足够的元素来接受你的索引。类似的东西

var prayerArray = Array&lt;PrayerSound&gt;(count:64, repeatedValue: somePrayer)

或者,您可以将其声明为一个可选数组,并将它们设置为nil

var prayerArray = Array&lt;PrayerSound?&gt;(count:64, repeatedValue: nil)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多