我有一个数组,我想只获取字段_tisk > 0且_chodnazev =“Předkrm”或“Dezert”的记录。
如何做到这一点?代码如下:
import UIKit
class ViewController: UIViewController {
var sorted_polozky = Array<(key: String, value: Array<polozkyUcet>)>()
struct polozkyUcet: Codable {
let _id: Int
let _masterid: Int
var _rcptid: Int
var _mnozstvi: String
var _delene_mnozstvi: String
let _recept: String
var _cena: Double
let _tisk: Int
var _chod: Int
var _chodnazev: String
var _host: String
var _popis: String
var _cenazak: Double
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let test = [(key: "Předkrm", value: [polozkyUcet(_id: 456037, _masterid: 145138, _rcptid: 19276, _mnozstvi: "1", _delene_mnozstvi: "0", _recept: "ŠKVARKOVÁ POMAZÁNKA", _cena: 85.0, _tisk: -1, _chod: 1, _chodnazev: "Předkrm", _host: "0", _popis: "", _cenazak: 85.0)]), (key: "Hlavní chod", value: [polozkyUcet(_id: 456038, _masterid: 145138, _rcptid: 17828, _mnozstvi: "1", _delene_mnozstvi: "0", _recept: "PÁRKY OD KREJCARŮ,BRAMBOROVÁ KAŠE", _cena: 135.0, _tisk: -10, _chod: 10, _chodnazev: "Hlavní chod", _host: "0", _popis: "", _cenazak: 135.0)]), (key: "Dezert", value: [polozkyUcet(_id: 456039, _masterid: 145138, _rcptid: 3047, _mnozstvi: "0,5", _delene_mnozstvi: "0", _recept: "RAKVIČKA SE ŠLEHAČKOU", _cena: 20.0, _tisk: -30, _chod: 30, _chodnazev: "Dezert", _host: "0", _popis: "", _cenazak: 40.0), polozkyUcet(_id: 456112, _masterid: 145138, _rcptid: 1117, _mnozstvi: "1", _delene_mnozstvi: "0", _recept: "KAPR FILET NA KMÍNĚ", _cena: 168.0, _tisk: 30, _chod: 30, _chodnazev: "Dezert", _host: "0", _popis: "", _cenazak: 168.0)])]
sorted_polozky = test
print(sorted_polozky)
}
}
3条答案
按热度按时间g6ll5ycj1#
要筛选出任何至少有一个元素与筛选器匹配的元组,可以执行以下操作
为了过滤掉并只返回符合条件的元素,我们需要将过滤器 Package 在
reduce(into:)
中,这样每个元组只过滤一次67up9zun2#
当你有一个polozkhUcet数组时,这应该可以做到:
我无法让你的代码运行,但这对我来说是有效的:
7rtdyuoh3#
最后我使用了:
let result = sorted_polozky.map{(key,value)in return value.filter{$0._tisk > 0}}
let filter = result.filter{!$0.isEmpty}
print(filter)