微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

arrays – Swift 1.2按关键字过滤一个Structs数组

我需要帮助过滤一系列Structs.

这就是我目前正在做的事情,它过滤数组但不正确.
例如,假设我使用“Mid”搜索数组中的项目我有一个应该显示的项目但是显示的项目以“Bad”开头.

var array = breweries.filter() { $0.name?.lowercaseString.rangeOfString(searchController.searchBar.text.lowercaseString) != nil }

    results = array

这是我的结构

struct Breweries {
    let name: String?
    let breweryId: String?
    let distance: Double?
    let largeIconURL: String?
    let streetAddress: String?
    let locality: String?
    let region: String?
    let phone: String?
    let website: String?

    init(brewDictionary: [String: AnyObject]) {

        name = brewDictionary["brewery"]?["name"] as? String
        breweryId = brewDictionary["breweryId"] as? String
        distance = brewDictionary["distance"] as? Double
        largeIconURL = brewDictionary["brewery"]?["images"]??.objectForKey("large") as? String
        streetAddress = brewDictionary["streetAddress"] as? String
        locality = brewDictionary["locality"] as? String
        region = brewDictionary["region"] as? String
        phone = brewDictionary["phone"] as? String
        website = brewDictionary["website"] as? String


    }
}

请指出正确的方向!

注意:我使用的是Swift 1.2

更新:

我认为视频有助于更好地解释我想要做的事情.

Demo Of issue

我想要的是找到过滤数组,以便只显示具有类似名称的项目.

更新2:事实证明,当我的UISearchController处于活动状态时,我忘了处理这个案例.

解决方法

@H_404_37@ 假设您的Struct名称是Breweries并且它具有name属性,请尝试以下操作:

let array = breweries.filter() {
    ($0.name!.lowercaseString as Nsstring).containsstring(searchController.searchBar.text.lowercaseString)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐