0
저는 iOS 프로그래밍이 처음인데 완성 문에서 변수를 사용할 때 문제가 있습니다. 아래 코드를 포함 시켰습니다. 데이터 유형 배열에 완료 변수를 저장할 때 빈 문자열 만 반환하는 것 같습니다.완료 문 변수에서 데이터를 검색 할 때 공백이 반환됩니다.
참고 : 완료 데이터는 loadSampleStockData 함수를 호출하고 나중에 FUNC에있는 tableView 세포 (있는 tableView : jQuery과, 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에 가서 문서를 읽으십시오 –