快速从数据库更新带有动态内容的静态数组

时间:2019-06-27 15:17:45

标签: ios arrays swift

我正在尝试实现TimelineTableViewCell(https://github.com/kf99916/TimelineTableViewCell/blob/master/TimelineTableViewCellDemo/TimelineTableViewController.swift)。它在时间轴中显示内容。

对于时间轴帖子,该演示具有如下静态内容:

array

使用静态内容可以正常工作。

现在,我正在尝试用tableview中的数据库内容更改这些静态内容。我有点困惑如何声明该数据数组,以后再将数据追加到它。

我的获取数据功能如下:

=MAX(IF())

我给我的数据的方式没有附加成员。

有帮助吗? 如何为顶部的元组声明空的二维数组,并将其附加到数据库中的数据中?

编辑:对于数据库,我正在这样做。

  // TimelinePoint, Timeline back color, title, description, lineInfo, thumbnail, illustration
 let data:[Int: [(TimelinePoint, UIColor, String, String, String?, String?, String?)]] = [0:[
        (TimelinePoint(), UIColor.black, "12:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", nil, nil, "Sun"),
        (TimelinePoint(), UIColor.clear, "19:00", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", nil, nil, "Moon")
    ], 1:[
        (TimelinePoint(), UIColor.lightGray, "08:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "60 mins", nil, "Sun"),
        (TimelinePoint(), UIColor.lightGray, "09:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", "30 mins", nil, "Sun")]]

1 个答案:

答案 0 :(得分:0)

编辑:

OP的问题的实际答案是:

检索数据后,您不会再呼叫reloadData()


您将data字典声明为:

var data:[Int: [(TimelinePoint, UIColor, String, String, String?, String?, String?)]] =
    [Int: [(TimelinePoint, UIColor, String, String, String?, String?, String?)]]()

(注意:出于可读性考虑,我将其放在两行上)

然后,当您想添加到字典中时,您将执行以下操作:

    data[0] = [
        (TimelinePoint(), UIColor.lightGray, "08:30", "This is the Start of a test.", "60 mins", nil, "Sun"),
        (TimelinePoint(), UIColor.lightGray, "09:30", "This is the End of the test.", "30 mins", nil, "Sun")
    ]

用您的headlinetext1等变量替换“字符串”。


编辑:我克隆了您引用的 TimelineTableViewCell 项目。

在随附演示中的TimelineTableViewController.swift中,我:

  • 创建了空的data字典
  • 评论了let data:样本数据
  • viewDidLoad()中添加了两个示例数据元素

所以,它看起来像这样:

class TimelineTableViewController: UITableViewController {

    var data:[Int: [(TimelinePoint, UIColor, String, String, String?, String?, String?)]] =
        [Int: [(TimelinePoint, UIColor, String, String, String?, String?, String?)]]()

    // TimelinePoint, Timeline back color, title, description, lineInfo, thumbnail, illustration
    //    var data:[Int: [(TimelinePoint, UIColor, String, String, String?, String?, String?)]] = [0:[
    //            (TimelinePoint(), UIColor.black, "12:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", nil, nil, "Sun"),
    //            (TimelinePoint(), UIColor.black, "15:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", nil, nil, "Sun"),
    //            (TimelinePoint(color: UIColor.green, filled: true), UIColor.green, "16:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "150 mins", "Apple", "Sun"),
    //            (TimelinePoint(), UIColor.clear, "19:00", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", nil, nil, "Moon")
    //        ], 1:[
    //            (TimelinePoint(), UIColor.lightGray, "08:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "60 mins", nil, "Sun"),
    //            (TimelinePoint(), UIColor.lightGray, "09:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", "30 mins", nil, "Sun"),
    //            (TimelinePoint(), UIColor.lightGray, "10:00", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "90 mins", nil, "Sun"),
    //            (TimelinePoint(), UIColor.lightGray, "11:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "60 mins", nil, "Sun"),
    //            (TimelinePoint(), UIColor.lightGray, "12:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "30 mins", "Apple", "Sun"),
    //            (TimelinePoint(), UIColor.lightGray, "13:00", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "120 mins", "Apple", "Sun"),
    //            (TimelinePoint(), UIColor.lightGray, "15:00", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "150 mins", "Apple", "Sun"),
    //            (TimelinePoint(), UIColor.lightGray, "17:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", "60 mins", nil, "Sun"),
    //            (TimelinePoint(), UIColor.lightGray, "18:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", "60 mins", nil, "Moon"),
    //            (TimelinePoint(), UIColor.lightGray, "19:30", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", "30 mins", nil, "Moon"),
    //            (TimelinePoint(), backColor: UIColor.clear, "20:00", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", nil, nil, "Moon")
    //        ]]

    override func viewDidLoad() {
        super.viewDidLoad()

        data[0] = [
            (TimelinePoint(), UIColor.lightGray, "08:30", "This is the Start of a test.", "60 mins", nil, "Sun"),
            (TimelinePoint(), UIColor.lightGray, "09:30", "This is the End of the test.", "30 mins", nil, "Sun")
        ]

        data[1] = [
            (TimelinePoint(), UIColor.lightGray, "16:30", "This is the Start of another test.", "60 mins", nil, "Mon"),
            (TimelinePoint(), UIColor.lightGray, "17:30", "This is the End of the second test.", "30 mins", nil, "Mon")
        ]

        let timelineTableViewCellNib = UINib(nibName: "TimelineTableViewCell", bundle: Bundle(for: TimelineTableViewCell.self))
        self.tableView.register(timelineTableViewCellNib, forCellReuseIdentifier: "TimelineTableViewCell")
    }

    // didn't touch anything after here

现在运行该应用程序将向我显示两个“天”,每个事件有两个条目:

enter image description here

如果那不是您得到的,那您就犯了其他错误...