键为 swift 的数组

Array with key in swift

我正在使用此代码通过键从数组中获取文本

视图中的代码确实加载了

    if let rs = db.executeQuery("select * from myTable", withArgumentsInArray: nil) {

        while rs.next() {

            let id = rs.stringForColumn("id")
            let text1 = rs.stringForColumn("text")

            dataArray.addObjectsFromArray(NSArray(objects:NSDictionary(object:NSArray(objects: id, text1), forKey:NSArray(objects: "id", "texti"))))



        }

    } else {
        println("executeQuery failed: \(db.lastErrorMessage())")
    }

...

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

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

    cell.textLabel?.text = dataArray[indexPath.row].objectForKey("texti") as? String

    return cell
}

单元格标签文本为空,为什么?


    println("dataArray: \(dataArray)")

dataArray: (
        {
                (
            id,
            texti
        ) =         (
            1,
            John
        );
    },
        {
                (
            id,
            texti
        ) =         (
            2,
            Mark
        );
    },
        {
                (
            id,
            texti
        ) =         (
            3,
            Marry
        );
    }
)

这里面有问题吗? 我在 objective-c 中使用相同的代码,它的工作可能

检索 dataArray 后调用 self.tableView.reloadData()。将 dataArray.addObjects 行更改为

dataArray.addObject(["id":id,"texti" : text1])

if let rs = db.executeQuery("select * from myTable",    withArgumentsInArray: nil) {

    while rs.next() {

        let id = rs.stringForColumn("id")
        let text1 = rs.stringForColumn("text")

        dataArray.addObject(["id":id,"texti" : text1]) // Added Line
    }
    self.tableview.reloadData() //Added Line

} else {
    println("executeQuery failed: \(db.lastErrorMessage())")
}

里面cellForRowAtIndexPath

if let txt =  dataArray[indexPath.row].objectForKey("texti") as? String
{
    cell.textLabel?.text = txt
}