微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

快速地如何从表格视图中删除对象?

如何解决快速地如何从表格视图中删除对象?

我有一个使用此字典的数据,该字典名为Donnees类

class AlimentObject {
    var id = UUID().uuidString
    var nomAliment = "Nouvel aliment"
    var poids : Float = 100
    var calories : Float = 0
    var proteines : Float = 0
    var lipides : Float = 0
    var glucides : Float = 0
    var aRetinol : Float = 0
    var aBetacarotene : Float = 0
    var vitamineC : Float = 0
    var vitamineB1 : Float = 0
    var calcium : Float = 0
    var omega3 : Float = 0
    var comments : String = ""
    var premierBooleen: Bool
    var optimize: Bool
    

    
    init(nomAliment: String,poids: Float,calories: Float,proteines: Float,lipides: Float,glucides: Float,aRetinol: Float,aBetacarotene: Float,vitamineC: Float,vitamineB1: Float,calcium: Float,omega3: Float,comments:String,premierBooleen: Bool,optimize: Bool) {
        
        self.nomAliment = nomAliment
        self.poids = poids
        self.calories = calories
        self.proteines = proteines
        self.lipides = lipides
        self.glucides = glucides
        self.aRetinol = aRetinol
        self.aBetacarotene = aBetacarotene
        self.vitamineC = vitamineC
        self.vitamineB1 = vitamineB1
        self.calcium = calcium
        self.omega3 = omega3
        self.comments = comments
        self.premierBooleen = false
        self.optimize = false
    }
    
    convenience init() {
        self.init(nomAliment: "Nouvel aliment",poids: 100,calories: 0,proteines: 0,lipides: 0,glucides: 0,aRetinol: 0,aBetacarotene: 0,vitamineC: 0,vitamineB1: 0,calcium: 0,omega3: 0,comments: "",premierBooleen: false,optimize: false)
    }
}

let begin01 = "11 09 2020"
let dateFormatter01 = DateFormatter()
dateFormatter01.dateFormat = "dd MM yyyy"
let date01 = dateFormatter01.date(from: begin01)!

let begin02 = "12 09 2020"
let dateFormatter02 = DateFormatter()
dateFormatter02.dateFormat = "dd MM yyyy"
let date02 = dateFormatter02.date(from: begin02)!

let begin03 = "15 09 2020"
let dateFormatter03 = DateFormatter()
dateFormatter03.dateFormat = "dd MM yyyy"
let date03 = dateFormatter03.date(from: begin03)!


func dateSimplificator(with date: Date) -> Date {
    return Calendar.current.startOfDay(for: date)
}

class Donnees {
        
        static var AlimentListWithSections = [[AlimentObject]]()
        
        static let list1 = [
            AlimentObject(nomAliment: "Blanc de poulet",calories: 108,proteines: 24,lipides: 1,aRetinol: 8,vitamineB1: 0.08,calcium: 8,omega3: 0.03,comments: "sdsdsdsdsd sdsddsdsd",optimize: false),AlimentObject(nomAliment: "Avocat",calories: 147,proteines: 1.76,lipides: 13.80,glucides: 1.57,aBetacarotene: 55,vitamineC: 5.49,vitamineB1: 0.05,calcium: 11.2,omega3: 0.08,comments: "aaaaaaaaa sdsddsdsd",AlimentObject(nomAliment: "Amandes",calories: 634,proteines: 21,lipides: 53,glucides: 8,aBetacarotene: 1,vitamineC: 0.8,vitamineB1: 0.18,calcium: 248,omega3: 0.06,comments: "fffffff sdsddsdsd",optimize: false)
            ]
        
        static let list2 = [
            AlimentObject(nomAliment: "Poivron Jaune",poids: 80,calories: 29.2,proteines: 1,lipides: 5.42,glucides: 0.21,aBetacarotene: 120,vitamineC: 184,vitamineB1: 0.03,calcium: 11,omega3: 0.02,comments: "lllllllssss",AlimentObject(nomAliment: "Saumon cru",calories: 192,proteines: 20.5,lipides: 12.2,vitamineC: 1.6,vitamineB1: 0.21,omega3: 1.79,comments: "eeeeeeee",optimize: false)
            ]
        
        static let list3 : [AlimentObject] = [
            AlimentObject(nomAliment: "Avocat",]
        
        static let list4 : [AlimentObject] = [
            AlimentObject(nomAliment: "Amandes",optimize: false)
            ]
        
        static let list5 : [AlimentObject] = []
    
        static let listVide : [AlimentObject] = []

        static let listDuJour = [list1,list2,list3,list4,list5]
    static let nomsDesRepas: [String] = ["Petit Déjeuner","Collation 11h","Déjeuner","Collation 16h","Diner"]

    static func removeInstance(menuDuJour: [[AlimentObject]],attr1: String,attr2: Float) -> [[AlimentObject]] {
        let ListDuJourFiltree = menuDuJour.map {
            $0.filter { !($0.nomAliment == attr1 && $0.poids == attr2) }
        }
        return ListDuJourFiltree
    }
}

我如何从第二部分的listDuJour中删除名为poivs =“ 80”的名为“ Poivron Jaune”的Aliment对象? 我有2个参数可以搜索我的AlimentObject:名称和poid。 而且该解决方案不应删除数组中的空白部分。

解决方法

要删除Sample(我的示例结构名称)的实例,可以执行以下操作。

struct Sample {
    var attr1: String
    var attr2: String
}

let list1: [Sample] = [
    .init(attr1: "alasdfj",attr2: "asd"),.init(attr1: "qwer",attr2: "upoipp"),.init(attr1: "yxcv",attr2: "gfhj")
]
let list2: [Sample] = [
    .init(attr1: "Poviron Jaune",attr2: "80")
]

let list = [list1,list2]

let resultList = list.map {
    $0.filter { !($0.attr1 == "Poviron Jaune" && $0.attr2 == "80") }
}

如果您要删除resultList内部的空数组,也可以将最后一部分更改为:

let resultList = list.map {
    $0.filter { !($0.attr1 == "Poviron Jaune" && $0.attr2 == "80") }
}.filter { !($0.isEmpty) }

(如果删除了子数组中的所有实例,则会出现空数组)

因此,您应该能够执行以下操作以摆脱listDuJour中所需的元素:

static func removeInstance(attr1: String,attr2: String) {
    listDuJour = listDuJour.map {
        $0.filter { !($0.nomAliment == attr1 && $0.poids == attr2) }
    }.filter { !($0.isEmpty) }
}

或者如果您想保留空数组(空节):

static func removeInstance(attr1: String,attr2: String) {
    listDuJour = listDuJour.map {
        $0.filter { !($0.nomAliment == attr1 && $0.poids == attr2) }
    }
}

请注意,删除元素后,您将必须致电tableView.reloadData()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。