2016-03-02 46 views
-1

在想知道爲什麼我不斷收到這條錯誤消息,EXC Bad Instruction能否幫助我並告訴我爲什麼。EXC Bad Instruction

這是代碼。

func updateStocks() { 
    let stockManager:StockManagerSingleton = StockManagerSingleton.sharedInstance 
    stockManager.updateListOfSymbols(stocks) 

    //Repeat this method after 15 secs. (For simplicity of the tutorial we are not cancelling it never) 
    dispatch_after(
     dispatch_time(
      DISPATCH_TIME_NOW, 
      Int64(15 * Double(NSEC_PER_SEC)) 
     ), 
     dispatch_get_main_queue(), 
     { 
      self.updateStocks() 
     } 
    ) 
} 

//4 
func stocksUpdated(notification: NSNotification) { 
    let values = (notification.userInfo as! Dictionary<String,NSArray>) 
    let stocksReceived:NSArray = values[kNotificationStocksUpdated]! 
    stocks.removeAll(keepCapacity: false) 
    for quote in stocksReceived { 
     let quoteDict:NSDictionary = quote as! NSDictionary 
     let changeInPercentString = quoteDict["ChangeInPercent"] as! String 
     let changeInPercentStringClean: NSString = (changeInPercentString as NSString).substringToIndex((changeInPercentString as NSString).length-1) 
     stocks.append(quoteDict["symbol"] as! String,changeInPercentStringClean.doubleValue) 
    } 
    tableView.reloadData() 
    NSLog("Symbols Values updated :)") 
} 
} 

在它是錯誤的路線,

let changeInPercentString = quoteDict["ChangeInPercent"] as! String 
+0

可以粘貼完整的錯誤消息?此外,嘗試打印'quoteDict [「ChangeInPercent」]'到控制檯 – Jojodmo

+0

是的,我會把完整的錯誤。 @ Jojodmo –

回答

1

的錯誤指出斯威夫特試圖解開一個nil值,因爲你在這一行指出

let changeInPercentString = quoteDict["ChangeInPercent"] as! String 

斯威夫特嘗試強制將quoteDict["ChangeInPercent"]的值設置爲String,因爲您使用的是as!,而應該使用as?,將其值設置爲nil如果該值不能使用??操作員發現

let changeInPercentString = quoteDict["ChangeInPercent"] as? String 

你可以將其設置爲默認值。例如,如果你想要的默認值是0.0%,你可以使用

let changeInPercentString = (quoteDict["ChangeInPercent"] as? String) ?? "0.0%" 

固有的問題是最有可能要麼quoteDict["ChangeInPercent"]不存在,或者quoteDict["ChangeInPercent"]不是字符串 - 它可能是一個NSString或者乾脆Double值。

如果你發現它應該是一個NSString,例如,你需要改變你的投值

let changeInPercentString: NSString = (quoteDict["ChangeInPercent"] as? NSString) ?? "0.0%"