ios – Swift:使用UISearchControllerPredicates过滤结构数组

ios – Swift:使用UISearchControllerPredicates过滤结构数组,第1张

概述想知道是否有人可以帮助我使用 Swift中的谓词进行过滤. 我有一个有点凌乱的数据源,我用来填充UITableView.数据源是一组结构.结构定义如下: struct Exercises { let category: String let name : String let x_seed: [Double] let y_seed: [Double] let 想知道是否有人可以帮助我使用 Swift中的谓词进行过滤.

我有一个有点凌乱的数据源,我用来填充UItableVIEw.数据源是一组结构.结构定义如下:

struct Exercises {    let category: String    let name : String    let x_seed: [Double]    let y_seed: [Double]    let hasMult: Bool}

现在在我的tablevIEw控制器中,我拿着一个包含表的所有数据的结构数组.

class MaintableVIEwController: UItableVIEwController,UISearchResultsUpdating {var exercises = [Exercises]()var filtered_exercises = [Exercises]()var resultSearchController = UISearchController()overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    // MARK: - table vIEw data source    self.exercises = [        Exercises(category:"Sports",name:"Bowling",x_seed:[125,155,185],y_seed:[3.00,3.73,4.43],hasMult:false),Exercises(category:"Sports",name:"Water Polo",y_seed:[10.00,12.40,14.80],name:"Handball",y_seed:[12.00,14.87,17.77],name:"Dancing",hasMult:true),name:"Frisbee",name:"Volleyball",name:"Archery",y_seed:[3.50,4.33,5.17],name:"Golf",hasMult:true)]    self.resultSearchController = ({        let controller = UISearchController(searchResultsController: nil)        controller.searchResultsUpdater = self        controller.dimsBackgroundDuringPresentation = false        controller.searchbar.sizetoFit()        self.tableVIEw.tableheaderVIEw = controller.searchbar        return controller    })()    self.tableVIEw.reloadData()}

我想要做的是根据’name’字段过滤exercise数组,并填充一个新的数据源filtered_exercises来填充tablevIEw.我不知道如何在这种情况下如何使用谓词.

// Search functionality func updateSearchResultsForSearchController(searchController: UISearchController){    filtered_exercises.removeAll(keepCapacity: false)    let searchPredicate = nspredicate(format: "SELF CONTAINS[c] %@",searchController.searchbar.text!)    // ??????????????    self.tableVIEw.reloadData()}

我知道我可以读取字符串数组中的所有名称并轻松地在tablevIEw中显示它.问题是我需要保留结构,因为其中包含的数据被传递到其他视图控制器.

那么,我如何过滤一组结构?

谢谢!

解决方法 如果你不坚持nspredicate(因为你没有使用NSFetchRequest,看不出你应该这么做的原因,…),这里是代码:

struct Exercises {  let category: String  let name : String  let x_seed: [Double]  let y_seed: [Double]  let hasMult: Bool}let exercises = [  Exercises(category:"Sports",hasMult:true)]let options = NsstringCompareOptions.CaseInsensitiveSearch | NsstringCompareOptions.DiacriticInsensitiveSearch// Filter exercises by name (case and diacritic insensitive)let filteredExercises = exercises.filter {  .name.rangeOfString("ol",options: options) != nil}let filteredExercisenames = ",".join(filteredExercises.map({ .name }))println(filteredExercisenames)

它打印水球,排球,高尔夫.

总结

以上是内存溢出为你收集整理的ios – Swift:使用UISearchController / Predicates过滤结构数组全部内容,希望文章能够帮你解决ios – Swift:使用UISearchController / Predicates过滤结构数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1046456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存