【问题标题】:Use of Unresolved Identifier Error Code使用未解析的标识符错误代码
【发布时间】:2016-03-01 14:27:09
【问题描述】:

我想知道为什么我不断收到错误消息,使用未解析的标识符“ChangeInPercent”。我不太确定为什么我不断收到此错误消息,如果有人能提供帮助,我将不胜感激。

这里是代码。

import UIKit

class StocksTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

//1
private var stocks: [(String,Double)] = [("AAPL",+1.5),("FB",+2.33),("GOOG",-4.3)]
@IBOutlet weak var tableView: UITableView!


override func viewDidLoad() {
    super.viewDidLoad()
    //2
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "stocksUpdated:", name: kNotificationStocksUpdated, object: nil)
    self.updateStocks()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

//UITableViewDataSource
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return stocks.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "cellId")
    cell.textLabel!.text = stocks[indexPath.row].0 //position 0 of the tuple: The Symbol "AAPL"
    cell.detailTextLabel!.text = "\(stocks[indexPath.row].1)" + "%" //position 1 of the tuple: The value "1.5" into String
    return cell
}

//UITableViewDelegate
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

}

//Customize the cell
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    switch stocks[indexPath.row].1 {
    case let x where x < 0.0:
        cell.backgroundColor = UIColor(red: 255.0/255.0, green: 59.0/255.0, blue: 48.0/255.0, alpha: 1.0)
    case let x where x > 0.0:
        cell.backgroundColor = UIColor(red: 76.0/255.0, green: 217.0/255.0, blue: 100.0/255.0, alpha: 1.0)
    case _:
        cell.backgroundColor = UIColor(red: 44.0/255.0, green: 186.0/255.0, blue: 231.0/255.0, alpha: 1.0)
    }

    cell.textLabel!.textColor = UIColor.whiteColor()
    cell.detailTextLabel!.textColor = UIColor.whiteColor()
    cell.textLabel!.font = UIFont(name: "HelveticaNeue-CondensedBold", size: 48)
    cell.detailTextLabel!.font = UIFont(name: "HelveticaNeue-CondensedBold", size: 48)
    cell.textLabel!.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25)
    cell.textLabel!.shadowOffset = CGSize(width: 0, height: 1)
    cell.detailTextLabel!.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25)
    cell.detailTextLabel!.shadowOffset = CGSize(width: 0, height: 1)
}

//Customize the height of the cell
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 120
}

//Stock updates
//3
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
        var changeInPercentString = quoteDict["ChangeInPercent"] as! String
        let changeInPercentStringClean: NSString = (changeInPercentString as NSString).substringToIndex(ChangeInPercent(changeInPercentString)-1)
        stocks.append(quoteDict["symbol"] as! String,changeInPercentStringClean.doubleValue)
    }
    tableView.reloadData()
    NSLog("Symbols Values updated :)")
}
}

出现错误的代码行是,

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

【问题讨论】:

  • 你确定是这条线吗?我认为它的下一行导致错误
  • 你在哪里定义ChangeInPercent(函数)?
  • 抱歉,是下一行造成的。 @jithin

标签: swift


【解决方案1】:
var changeInPercentString = quoteDict["ChangeInPercent"] as! String
let changeInPercentStringClean: NSString = (changeInPercentString as NSString).substringToIndex((changeInPercentString as NSString).length-1)

【讨论】:

  • 当我输入您的代码时,它显示“无法应用二进制运算符'-'。@Pradeep K
  • 更新了代码。我假设您正试图跳过changeInPercentString 的最后一个字符。例如如果changeInPercentString 是 44%,那么您正试图在 changeInPercentStringClean 中获得 44,对吧?
  • 当我构建并运行它时,它显示 Sigabrt。 2016-02-29 22:43:10.791 StockCountApp[6702:624341] Interface Builder 文件中的未知类 _TtC13StockCountApp24StockTableViewController。 2016-02-29 22:43:10.842 StockCountApp[6702:624341] *** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:此类不是键值编码- 符合关键的 tableView。 @Pradeep K
  • 确保该文件包含在您的项目中并且还设置了视图控制器的自定义类?您是否还拖动了一个表格视图控制器并更改了它的自定义类,或者您是否拖动了一个 UIViewController?由于您是从 UIViewController 派生的,因此您必须拖动同一个类,然后添加一个表格视图并设置连接
  • 我制作了一个 ViewController,然后将一个 tableView 拖到上面,然后与 tableView 建立了连接。拖动同一个类是什么意思? @Pradeep K
猜你喜欢
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 2019-12-29
相关资源
最近更新 更多