0
私はiOSプログラミングが新しく、完了ステートメントの変数を使用する際に問題があります。私は以下のコードを含んでいますが、データ型配列に完了変数を格納すると、空の文字列しか返されないようです。完了ステートメント変数からデータを取得するときに空白が返される
注:完了データがloadSampleStockData機能で呼び出され、後にfuncのtableView(のtableView:のUITableView、cellForRowAtIndexPath indexPath:NSIndexPath)中の細胞に戻すことが想定される - >のUITableViewCellことができ任意の助け
感謝提供されます!あなたの非同期呼び出しが何もstock1...3
を設定する前に
import UIKit
class dashboardViewController: DefaultViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var balanceLabel: UILabel!
var stocks = [stockData]()
let stock = stockinfo()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
tableView.reloadData()
loadSampleStockData()
user.newUser() // Move to login function when login and registration is implemented
//Sets the Balance Label on Dashboard
balanceLabel.text = "$" + String(format: "%.2f", user.getBalance())
}
func loadSampleStockData() {
var stock1: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "")
var stock2: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "")
var stock3: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "")
stock.getInfo("FB") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{
stock1 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "FB")
stocks.append(stock1)
})
}
stock.getInfo("MSFT") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{
stock2 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "MSFT")
stocks.append(stock2)
})
}
stock.getInfo("APPL") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{
stock3 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "APPL")
stocks.append(stock3)
})
}
print(stocks.count)
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return stocks.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "stockViewCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! stockTableViewCell
let stock = stocks[indexPath.row]
cell.stockName.text = stock.name
cell.stockPercentage.text = stock.percentageChange
cell.stockDollarChange.text = stock.askPrice
cell.stockTicker.text = stock.stockTicker
return cell
}
}
無礼な質問かもしれませんが、完成ハンドラ内の在庫を開始すると、別の補完ハンドラで呼び出すことができないため、可変スコープのために他の機能を呼び出すことができませんか?私が間違っているかもしれないので、コードスニペットを提供してもらえますか?あなたの助けをありがとう –
ここにあるインスタンス変数など、共有状態が必要です。各補完ハンドラは配列に非同期で追加され、メインスレッドはすべて完了するまで待機します – Alexander
あなたの辛抱強さに感謝し、これによって私を助けてください。私は、完了ハンドラの '株式'にデータを追加しようとしました。私は「在庫」を完成ハンドラに渡すことについてどうすればよいでしょうか。私は上記の変更を加えましたが、私はこの間違いを犯しています。もしそうなら、私にコードスニペットを提供してもらえますか?あなたの助けてくれてありがとう、私はgoogleを続行し、文書を読む –