Swift iOS how selected data to a table

一笑奈何 提交于 2020-01-16 17:58:38

问题


How do I do it when if status is equal to static I don't want to show it in the table? Code is below. I only wanted to show all the data but not the data with status == "static".

Response [["status": {
    name = static;
}, "sched": 2015-01-01T08:00:00+08:00, "desc": Brush your teeth, "id": 249, "reward": 1.00, "parent": , "child": , "date_created": 2018-04-25T14:27:20.405928+08:00, "name": aBrush your teeth, "occurrence": {
    name = once;
}, "type": , "date_modified": 2018-04-26T11:56:02.030647+08:00], ["status": {
    name = static;
}, "sched": 2015-01-01T08:00:00+08:00, "desc": Brush your teeth, "id": 250, "reward": 1.00, "parent": , "child": , "date_created": 2018-04-25T14:28:49.780354+08:00, "name": Brush your teeth, "occurrence": {
    name = once;
}, "type": , "date_modified": 2018-04-26T11:56:05.616333+08:00], ["status": {
    name = static;
}, "sched": 2015-01-01T08:00:00+08:00, "desc": Brush your teeth, "id": 252, "reward": 1.00, "parent": , "child": , "date_created": 2018-04-25T14:31:02.274405+08:00, "name": Brush your teeth, "occurrence": {
    name = once;
}, "type": , "date_modified": 2018-04-26T11:59:57.676148+08:00], ["status": {
    name = static;
}, "sched": 2015-01-01T08:00:00+08:00, "desc": Brush your teeth, "id": 253, "reward": 1.00, "parent": , "child": , "date_created": 2018-04-25T14:34:37.097498+08:00, "name": Brush your teeth, "occurrence": {
    name = once;
}, "type": , "date_modified": 2018-04-26T09:42:24.633359+08:00], ["status": {
    name = static;
}, "sched": 2015-01-01T08:00:00+08:00, "desc": Brush your teeths, "id": 254, "reward": 1.00, "parent": , "child": , "date_created": 2018-04-25T14:36:53.766088+08:00, "name": Brush your teeth, "occurrence": {
    name = once;
}, "type": , "date_modified": 2018-04-26T11:56:15.757769+08:00], ["status": {
    name = ongoing;
}, "sched": 2018-04-19T15:54:24.657644+08:00, "desc": {
  "questions" : [
    {
      "b" : 2,
      "a" : 1
    },
    {
      "b" : 3,
      "a" : 2
    },
    {
      "b" : 2,
      "a" : 8
    },
    {
      "b" : 9,
      "a" : 7
    },
    {
      "b" : 3,
      "a" : 6
    }
  ],
  "operation" : "+"
}, "id": 260, "reward": 1.00, "parent": shit, "child": , "date_created": 2018-04-26T10:13:42.913149+08:00, "name": chorename, "occurrence": {
    name = once;
}, "type": homework, "date_modified": 2018-04-26T10:13:42.953485+08:00]]


       if let getTempDetails: [String : Any] = getAllDetail[indexPath.row] {
            print("All Result: " , getTempDetails)
            if let str = getTempDetails["status"] as? [String: String] {
                if let name = str["name"] {
                    if name == "ongoing" {
                        cell.toDoItemLabel.text = getTempDetails["name"] as? String
                        cell.statuslabel.backgroundColor = created

//                        cell.label.textColor =  UIColor(red: 0.9294, green: 0.3333, blue: 0.1804, alpha: 1.0)
//                        cell.backgroundColor = created


                    }else if name == "approved" {
                       cell.toDoItemLabel.text = getTempDetails["name"] as? String
                       cell.statuslabel.backgroundColor = done
                    }
                    else if name == "for approval" {
                        cell.toDoItemLabel.text = getTempDetails["name"] as? String
                        cell.statuslabel.backgroundColor = pending
                    }else if name == "near expiry" {
                       cell.toDoItemLabel.text = getTempDetails["name"] as? String
                       cell.statuslabel.backgroundColor = neardue
                    } else if name == "expired" {
                        cell.toDoItemLabel.text = getTempDetails["name"] as? String
                        cell.statuslabel.backgroundColor = expired
                    }else if  name == "static" {
                       cell.toDoItemLabel.text = getTempDetails["name"] as? String
                        cell.statuslabel.backgroundColor = UIColor(red: 0.7686, green: 0.4235, blue: 0.3725, alpha: 1.0)
//
                    } else {
                        print("false")
                       cell.toDoItemLabel.text = "lols"
                    }
                }
                }
            }

回答1:


Firstly, you should not create a cell if you don't want to show it. If you are, you are making unnecessary extra calls.

If you are currently returning the total count of your datasource at numberOfRowsInSection, you must return the count of items with status != "static" instead. This way the cellForRowAt will be called the correct amount of times.

Then, you have 2 options:

  1. Have a separate datasource which doesn't contain items with status == "static" and use it directly at cellForRowAt;
  2. Filter, at cellForRowAt, your current datasource, so that it returns only the correct items.



回答2:


Before passing data to tableview methods, you must have to remove entries from getTempDetails dictionary which you don't want.. means create same dictionary with removing data where name == "static"... and use newly created dictionary for table



来源:https://stackoverflow.com/questions/50033748/swift-ios-how-selected-data-to-a-table

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!