如何访问与Uisearchbar一起使用的结构枚举值?
我正在努力学习创建和使用UITAITEVIEW和UISEARCHBAR的更复杂的结构。我有一个表,在2个部分中显示以下结构。
struct ReceiveInResponse: Codable {
var result: [ReceiveIn]
}
struct ReceiveIn: Codable {
var section: String
var items: [ReceiveInComp]
enum CodingKeys: String, CodingKey {
case section = "Section"
case items
}
}
struct ReceiveInComp: Codable {
let owner, barcode, quantity: String
let resultDescription, status: String
enum CodingKeys: String, CodingKey {
case owner = "Owner"
case barcode = "Barcode"
case quantity = "Quantity"
case resultDescription = "Description"
case status = "Status"
}
}
我已经多次实施了搜索栏。但是这一次,我在尝试搜索案例条形码的值时会遇到错误。这是错误。
Type '[ReceiveInComp]' has no member 'barcode'
这是我的代码
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
self.filteredList = []
if (searchText == "") {
self.filteredList = self.ReviewList
} else {
for comp in self.ReviewList {
let myitems = comp.items
尝试1
switch myitems {
case .barcode(let barcode): do { // error thrown here
if (barcode.lowercased().contains(searchText.lowercased())) {
self.filteredList.append(comp)
}
}
}
尝试2
var barcode = myitems.barcode //在此处丢弃的错误,
if (barcode.lowercased().contains(searchText.lowercased())) {
self.filteredList.append(comp)
}
}
}
self.tableView.reloadData()
}
我可以打印Myitems以控制并查看其包含的值。如何访问条形码的值以与搜索文本进行比较?
中打印(myitems)时看到的样本,
App.ReceiveInComp(owner: "E3D Rental", barcode: "10021640", quantity: "1", resultDescription: "2X2. X42 BLK CABINET ", status: "missing"),
这是我在控制台解决方案
for comp in self.ReviewList {
let myitems = comp.items
for item in myitems{
let barcode = item.barcode
if (barcode.lowercased().contains(searchText.lowercased())) {
self.filteredList.append(comp)
}
}
}
这似乎有效,出于某种原因而在搜索结果中获得重复,但先前的错误已经消失。谢谢@shadowrun
I am struggling to learn about creating and using more complex structs with UITableView and UIsearchbar. I have a table that displays the following structs in 2 sections.
struct ReceiveInResponse: Codable {
var result: [ReceiveIn]
}
struct ReceiveIn: Codable {
var section: String
var items: [ReceiveInComp]
enum CodingKeys: String, CodingKey {
case section = "Section"
case items
}
}
struct ReceiveInComp: Codable {
let owner, barcode, quantity: String
let resultDescription, status: String
enum CodingKeys: String, CodingKey {
case owner = "Owner"
case barcode = "Barcode"
case quantity = "Quantity"
case resultDescription = "Description"
case status = "Status"
}
}
I have implemented the searchbar many times. But this time I am getting an error when trying to search the value of case barcode. This is the error.
Type '[ReceiveInComp]' has no member 'barcode'
Here is my code
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
self.filteredList = []
if (searchText == "") {
self.filteredList = self.ReviewList
} else {
for comp in self.ReviewList {
let myitems = comp.items
attempt 1
switch myitems {
case .barcode(let barcode): do { // error thrown here
if (barcode.lowercased().contains(searchText.lowercased())) {
self.filteredList.append(comp)
}
}
}
attempt 2
var barcode = myitems.barcode // error thrown here
if (barcode.lowercased().contains(searchText.lowercased())) {
self.filteredList.append(comp)
}
}
}
self.tableView.reloadData()
}
I can print myitems to console and see the values it contains. How do I access the value of barcode for comparison to searchtext?
Here is a sample of what I see when I do print(myitems) in console
App.ReceiveInComp(owner: "E3D Rental", barcode: "10021640", quantity: "1", resultDescription: "2X2. X42 BLK CABINET ", status: "missing"),
SOLUTION
for comp in self.ReviewList {
let myitems = comp.items
for item in myitems{
let barcode = item.barcode
if (barcode.lowercased().contains(searchText.lowercased())) {
self.filteredList.append(comp)
}
}
}
this seems to work, getting duplicates in the search results for some reason but prior error is gone. thanks @shadowrun
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论