Я пытаюсь отфильтровать DataArray по CaseDataArray, где dataName в DataArray совпадает с dataName в CaseDataArray. Как видно из кода, каждый массив определяется своей собственной структурой. Я отметил строку в коде, где мне нужна помощь. Я пытался использовать $ 0 и все, что я могу придумать, но не радости. Я знаю, что на форуме есть ряд похожих вопросов, но никто не видит ответа на эту конкретную ситуацию.
import UIKit
import SQLite
struct Data_On_Case
{
var dataID: Int64
var dataName: String
}
struct MyData
{
let dataID: Int64
var dataName: String
var dataType: String?
var dataDescription: String?
var pricePaid: Double?
var shipping: Double?
var datePurchased: String?
var dataDuration: String?
var manufacturer: String?
var venue: String?
var performanceLevel: String?
var dataNotes: String?
var dataStyle: String?
}
class Test_VC: UIViewController
{
private let crossRefTable = Table("CrossRefCase_Data")
private let crossRefRCaseID = Expression<Int64>("CaseID_CaseXRef")
private let crossRefDataID = Expression<Int64>("DataID_CaseXRef")
private var theDataArray = [MyData]()
private let theDataTable = Table("My_Data")
private let dataID = Expression<Int64>("DataID")
private let data_Name = Expression<String>("Data_Name")
private var searchBarShowing: Bool = false
private var isSearching: Bool = false
private var searchingArray = [MyData]()
private var theCurrentArray = [MyData]()
private var theCaseDataArray = [Data_On_Case]()
@IBOutlet weak var theSearchBar: UISearchBar!
override func viewDidLoad()
{
super.viewDidLoad()
}
}
extension Test_VC: UISearchBarDelegate
{
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int)
{
switch selectedScope
{
case 0:
searchingArray = theDataArray
isSearching.toggle()
case 1:
// Cannot convert value of type '((Data_On_Case) throws -> Bool) throws -> Bool' to expected argument type '(MyData) throws -> Bool'
// The line below is where I'm stuck. The error is shown above.
searchingArray = theDataArray.filter(theCaseDataArray.contains(where: ))
isSearching = true
self.theSearchBar.resignFirstResponder()
theSearchBar.showsScopeBar = true
default:
return
}
}
}