【发布时间】:2021-07-27 18:22:08
【问题描述】:
您好,尝试使用 CocoaPods 下拉菜单创建排序按钮,代码未显示任何错误且菜单有效,但如果我单击该按钮,则没有任何反应。
dropDown.selectionAction = { [weak self] (index: Int, item: String) in //8
guard let _ = self else { return }
sender.setTitle(item, for: .normal) //9
let realm = try! Realm()
var books = realm.objects(Book.self).sorted(byKeyPath: "title", ascending: false)
if item == "sort by author" {
func filterResultsbyauthor(searchString: String){
let predicate = NSPredicate(format: "author BEGINSWITH [c]%@", searchString)
books = realm.objects(Book.self).filter(predicate).sorted(byKeyPath:"author", ascending: true)
self?.tableview.reloadData()
}
}
}
【问题讨论】:
-
代码有点难以理解。你为什么要读两遍书? 'books' 是您的 tableView 数据源吗?如果是这样,它不会显示任何内容,因为书籍是本地变量
var books = realm.objects- 这是故意的吗?另外,为什么要在 if 语句func filterResultsbyauthor(中定义另一个函数,因为它没有被调用。 -
我删除了局部变量并按照建议将函数更改为一段代码,但仍然无法正常工作。我收到错误“由于未捕获的异常'无效值'而终止应用程序,原因:'预期'Book'类型对象上的属性'author'类型的字符串类型对象,但收到:(null)'