繁体   English   中英

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

[英]Updating static array with dynamic content from database in swift

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

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

  // 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")]]

静态内容可以正常工作。

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

我的获取数据功能如下所示:

          {
     dataHelper.getConditionsData { (data1) in
          for post in data1 {
             let post1 = post as! NSDictionary
             let headline = post1.value(forKey: "headline")
             let text1 = post1.value(forKey: "text")
             let t_date = post1.value("t_date")
      //how do i declare empty array at top and append these to data array?
   }

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

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

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

   var i=0; 
   dataHelper.getConditionsData { (data1) in 
   for post in data1 
   { 
   let postA = post as! NSDictionary 
   let condition_text = postA.value(forKey: "condition_text") 
   let condition_date = postA.value(forKey: "condition_date") 
   self.data[i] = [ (TimelinePoint(), UIColor.lightGray, condition_date as! 
   String,condition_text as! String , "60 mins", nil, "Sun") ] 
   i = i+1 
  } 
 }

编辑:

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

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

在此处输入图片说明

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


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM