Swift 过滤对象数组

标签 swift

class book{
    var nameOfBook: String!
}

var englishBooks=[book(),book(),book()]
var arr = englishBooks.filter {
    contains($0.nameOfBook, "rt")
}

我正在使用这个过滤器,但出现错误,无法使用参数调用过滤器

最佳答案

contains() 检查序列是否包含给定元素,例如 如果 String 包含给定的 Character

如果您的目的是查找名称中包含子字符串“rt”的所有书籍,那么您可以使用rangeOfString():

var arr = englishBooks.filter {
    $0.nameOfBook.rangeOfString("rt") != nil
}

或者不区分大小写的比较:

var arr = englishBooks.filter {
    $0.nameOfBook.rangeOfString("rt", options: .CaseInsensitiveSearch) != nil
}

Swift 2 开始您可以使用

nameOfBook.containsString("rt") // or
nameOfBook.localizedCaseInsensitiveContainsString("rt")

Swift 3 中,这是

nameOfBook.contains("rt") // or
nameOfBook.localizedStandardContains("rt") // or
nameOfBook.range(of: "rt", options: .caseInsensitive) != nil

关于Swift 过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30673936/

相关文章:

swift - UITableViewDataSource 方法不起作用

ios - 使用导航显示 map View ?.push(mapView) 并且看不到任何弹出内容

ios - 1 个 UIView 中带有 2 个选择器的 2 个文本字段

swift - Realm 对象的自定义 setter/willSet

swift - 非半透明 UITabBar 创建奇怪的灰色条

swift - 如何构建用于拖放拼图 block 的对齐网格功能?

ios - 如何快速获取相册标题和计数?

ios - swift 4 : Save and retrieve an array of custom objects (with nested custom objects) to UserDefaults

ios - 如何在 UITableViewCell 中创建具有动态高度的 View 网格

ios - 在 iOS SceneKit 中更新几何表面的正确方法是什么?