像這樣的 JASON 回應:我在下拉串列中顯示服務...現在我需要選擇 category_id
{
"result": {
"data": [
{
"id": 167,
"service_name": "Seo",
"category_id": 1,
},
{
"id": 166,
"service_name": "Development",
"category_id": 11,
},
{
"id": 164,
"service_name": "ghah",
"category_id": 9,
},
編輯: JSON 回應的 swift 類模型AutoSearchResultModel
public class AutoSearchResultModel {
public var result : AutoSearchResult?
}
public class AutoSearchResult {
public var data : Array<SearchData>?
}
public class SearchData {
public var id : Int?
public var service_name : String?
public var category_id : Int?
}
代碼:我可以在下拉選單中顯示結果并在文本欄位中顯示選定的服務名稱,但我需要category_id如何選擇?如果我一直在 for 回圈中給出這樣的結果,selectedCategoryId = totData.category_id我會得到 11 .. 為什么?我如何獲得選定的 ID
var selectedCategoryId: String? = ""
private var autosearchResult = AutoSearchResultModel(dictionary: NSDictionary())
func autoSearchService(){
APIReqeustManager.sharedInstance.serviceCall(param: parameters as [String : Any], method: .post, url: CommonUrl.auto_search) { [weak self] (resp) in
self?.autosearchResult = AutoSearchResultModel(dictionary: resp.dict as NSDictionary? ?? NSDictionary())
}
}
@objc func textFieldDidChange(_ textField:UITextField) {
var testArray = [String]()
var originalDataArray:[String] = Array()
for totData in autosearchResult?.result?.data ?? []{
originalDataArray.append(totData.service_name)
selectedCategoryId = totData.category_id// all the time i am getting only 11.. how do i get selected category_id
}
testArray.removeAll()
if searchTF.text?.count != 0 {
for totData in originalDataArray{
if let wordToSearch = searchTF.text{
let range = totData.lowercased().range(of: wordToSearch, options: .caseInsensitive, range: nil, locale: nil)
if range != nil {
testArray.append(totData)
}
}
}
}
showDropDown(with: testArray, from: textField) { [weak self] (item, index) in
self?.searchTF.text = item
self?.searchResultService()
}
}
我如何被選中category_id請指導我
uj5u.com熱心網友回復:
你有selectedCategoryId = totData.category_id內回圈,所以你總是會得到最后category_id你的autosearchResult?.result?.data。問題是,category_id您要選擇哪個?
移動selectedCategoryId外for loop,并選擇您想使用一個,例如像:
if let result = autosearchResult?.result,
let selectedCategoryId = result.data.first(where: {$0.category_id == x})
{
print(selectedCategoryId)
}
編輯1:
要將 textfield 文本用于category_id,請使用以下內容:
if let result = autosearchResult?.result,
let txt = textField.text,
let catid = Int(txt), // <-- convert to int
let selectedCategoryId = result.data.first(where: {$0.category_id == catid})
{
print(selectedCategoryId)
}
由于我沒有您的所有代碼資訊,因此您必須相應地調整代碼。
uj5u.com熱心網友回復:
使用此函式獲取選定的類別資料。
func getCategoryData(data: [YourData], categoryID: Int) -> [YourModel] {
// is you have converted your data into object
return data.filter({$0.category_id = categoryID})
// if you have Dictionary
return data.filter({$0["category_id"] = categoryID})
}
你可以用它作為
var filterData = getCategoryData(data:originalDataArray, categoryID:2)
-> 一些建議,您可以使用 Codable 物件將 API 回應直接轉換為物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/387246.html
