以下代码可以很好地按作者过滤书籍,但仅当搜索字符串等于完整字符串时才有效。示例:作者包含全名,例如["Jack Nicklaus", "Arnold Palmer", "Sam Snead"]
如何允许搜索栏根据名称的一部分进行过滤而不区分大小写,例如“Nicklaus”
var filteredBooksByAuthor: [Book] {
if searchTextAuthor.isEmpty {
books
} else {
books.filter { $0.authors.contains(searchTextAuthor) }
}
}
您可以使用
localizedCaseInsensitiveContains
.Toy 示例来证明它的工作原理:如何使其适应您的用例应该是显而易见的,即
books
需要根据其authors
属性进行过滤的位置。您可以减少一本书的作者并据此进行筛选。