从数组中过滤数据
Filtering data from array
我有一个用于 UIViewController 的 class,它使用 http 获取一些数据。
class NCHINViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var RequestTokenBTN: UIButton!]
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var listIdTF: UITextField!
@IBOutlet weak var listNameTF: UITextField!
//set pickerView
var PDVListId: [clsSpinnerNCHIN] = []
var arrayMissingLI: [String] = [String]()
var arrayMissingLN: [String] = [String]()
override func viewDidLoad() {
...
}
override func didReceiveMemoryWarning() {
...
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
pickerView.subviews.forEach({
[=10=].isHidden = [=10=].frame.height < 1.0
})
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
//return pickerData.count
if pickerView == listNameTF.inputView{
return PDVListId.count
} else {
return PDVListName.count
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
//return pickerData[row]
if pickerView == listNameTF.inputView{
return PDVListId[row].listName
} else {
return PDVListName[row]
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == listNameTF.inputView{
return listNameTF.text = PDVListId[row].listName
} else {
return listIdTF.text = PDVListName[row]
}
}
func reqNomSpinnerNCHIN(){
NetworkingService.shared.reqSpinnerNominalCashin() { spinnerResponse in
if (spinnerResponse == nil) {
self.view.makeToast("Technical problem, please try again...")
} else {
if (spinnerResponse?.success == Const.ResponseKey.Success) {
print(spinnerResponse ?? "")
self.PDVListId = (spinnerResponse?.data)!
} else {
let popup = PopupDialog(title: "Failed", message: spinnerResponse?.error)
let buttonOK = DefaultButton(title: "OK") {
}
popup.addButton(buttonOK)
self.present(popup,animated: true,completion: nil)
}
}
}
}
}
spinnerResponse?.data
是 clsSpinnerNCHIN
在这种情况下,我想过滤从spinnerResponse.data
插入的数据PDVListID
里面的数据
例如:
如果我从服务器得到的响应是
T = In
LI = 001
LN = CG1
T = Out
LI = 001
LN = CG2
T = Missing
LI = 001
LN = CG3
T = Out
LI = 002
LN = CG4
T = In
LI = 002
LN = CG5
这就是我想要做的
if userData.type == "Missing" {
//put all data from "LI" that "T == Missing" that i got from `spinnerResponse?.data` and save it into arrayMissingLI
//put all data from "LN" that 'T == Missing" that i got from `spinnerResponse?.data` and save it into arrayMissingLN
}
如果我可以从 T
中过滤每一个并将 LI
放入 arrayMissingLN
和 arrayMissingLI
并在 PickerView 中使用它来显示数据选择 Missing、Out 和 In
if let apiResponseData = spinnerResponse.data{
arrayMissingLI.removeAll()
arrayMissingLN.removeAll()
_ = apiResponseData.filter { (dic) -> Bool in
if dic.T == "Missing"{
arrayMissingLI.append(dic.LI)
arrayMissingLN.append(dic.LN)
}
}
}
试试这个。这将为您提供 arrayMissingLI 和 arrayMissingLN 数组。
如果您有任何疑虑,请告诉我。
我有一个用于 UIViewController 的 class,它使用 http 获取一些数据。
class NCHINViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var RequestTokenBTN: UIButton!]
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var listIdTF: UITextField!
@IBOutlet weak var listNameTF: UITextField!
//set pickerView
var PDVListId: [clsSpinnerNCHIN] = []
var arrayMissingLI: [String] = [String]()
var arrayMissingLN: [String] = [String]()
override func viewDidLoad() {
...
}
override func didReceiveMemoryWarning() {
...
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
pickerView.subviews.forEach({
[=10=].isHidden = [=10=].frame.height < 1.0
})
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
//return pickerData.count
if pickerView == listNameTF.inputView{
return PDVListId.count
} else {
return PDVListName.count
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
//return pickerData[row]
if pickerView == listNameTF.inputView{
return PDVListId[row].listName
} else {
return PDVListName[row]
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == listNameTF.inputView{
return listNameTF.text = PDVListId[row].listName
} else {
return listIdTF.text = PDVListName[row]
}
}
func reqNomSpinnerNCHIN(){
NetworkingService.shared.reqSpinnerNominalCashin() { spinnerResponse in
if (spinnerResponse == nil) {
self.view.makeToast("Technical problem, please try again...")
} else {
if (spinnerResponse?.success == Const.ResponseKey.Success) {
print(spinnerResponse ?? "")
self.PDVListId = (spinnerResponse?.data)!
} else {
let popup = PopupDialog(title: "Failed", message: spinnerResponse?.error)
let buttonOK = DefaultButton(title: "OK") {
}
popup.addButton(buttonOK)
self.present(popup,animated: true,completion: nil)
}
}
}
}
}
spinnerResponse?.data
是 clsSpinnerNCHIN
在这种情况下,我想过滤从spinnerResponse.data
PDVListID
里面的数据
例如: 如果我从服务器得到的响应是
T = In
LI = 001
LN = CG1
T = Out
LI = 001
LN = CG2
T = Missing
LI = 001
LN = CG3
T = Out
LI = 002
LN = CG4
T = In
LI = 002
LN = CG5
这就是我想要做的
if userData.type == "Missing" {
//put all data from "LI" that "T == Missing" that i got from `spinnerResponse?.data` and save it into arrayMissingLI
//put all data from "LN" that 'T == Missing" that i got from `spinnerResponse?.data` and save it into arrayMissingLN
}
如果我可以从 T
中过滤每一个并将 LI
放入 arrayMissingLN
和 arrayMissingLI
并在 PickerView 中使用它来显示数据选择 Missing、Out 和 In
if let apiResponseData = spinnerResponse.data{
arrayMissingLI.removeAll()
arrayMissingLN.removeAll()
_ = apiResponseData.filter { (dic) -> Bool in
if dic.T == "Missing"{
arrayMissingLI.append(dic.LI)
arrayMissingLN.append(dic.LN)
}
}
}
试试这个。这将为您提供 arrayMissingLI 和 arrayMissingLN 数组。 如果您有任何疑虑,请告诉我。