Swift / iOS - 带有UITableViewCell的UITableView无法填充结果

问题描述 投票:0回答:2

enter image description here基本上,我正在尝试使用SQLITE结果获取我的TableView,但它根本没有流行。奇怪的部分是我编辑了一个sqlite的示例项目来做同样的事情,但是从我的数据库改为工作。

此外,在我的项目中,它具有与SQLITE示例项目完全相同的代码,除了单元名称等,我可以创建一个警报来显示数组中的一个结果,并且它工作正常。

我不明白为什么它不会填充。

很抱歉,如果我无法解释它,但这是我的代码和一个例子,它试图没有电视结果,但有一个警报。

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return returnedCardNames.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell:CardInfo_Cell = tableView.dequeueReusableCellWithIdentifier("cardCell") as! CardInfo_Cell
    let card_name:CardInfo_Adapter = returnedCardNames.objectAtIndex(indexPath.row) as! CardInfo_Adapter
    cell.card_nameLabel.text = "\(card_name.CardName)"
    return cell
}

override func viewWillAppear(animated: Bool) {
    self.getCardNames()
}

func getCardNames()
{
    returnedCardNames = NSMutableArray()
    returnedCardNames = Card_Adapter.getInstance().getAllSimilarCardNamesByUserEntry("null", passedSetName: "null")
    cardResults.reloadData()

    let card_name:CardInfo_Adapter = returnedCardNames.objectAtIndex(10) as! CardInfo_Adapter
    Util.invokeAlertMethod("Card Results", strBody: card_name.CardName, delegate: nil)
}

enter image description here

ios swift sqlite uitableview
2个回答
0
投票

我通过在ViewDidLoad()中为我的UITableView提供委托和dataSource的自我方法来修复它。

self.cardResults.delegate = self
self.cardResults.dataSource = self

我使用了另一个stackoverflow线程,它提供了答案。 UITableView datasource functions not called (swift)


0
投票

如果您正在使用libsqlite3库,那么使用它(它对我有用)

在didload()函数中创建数据库,然后为表视图使用:

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell        

    var selectStatement: OpaquePointer? = nil
    let selectSql = "select * from Inventory where ID = \((indexPath.row + 1))"
    if sqlite3_prepare_v2(Database.database.sqliteDB, selectSql, -1, &selectStatement, nil) == SQLITE_OK{
        if sqlite3_step(selectStatement) == SQLITE_ROW {

            let nameItem = sqlite3_column_text(selectStatement, 1)
            let price = sqlite3_column_double(selectStatement, 2)
            let quantity = sqlite3_column_int(selectStatement, 3)

            let nameString = String(cString: nameItem!)
            let priceString = String(format: "%.1f",price)
            let quantityString = String(quantity)

            cell.itemName.text = nameString
            cell.itemPrice.text = priceString
            cell.itemQuantity.text = quantityString

        }
    }

    return cell
}
© www.soinside.com 2019 - 2024. All rights reserved.