- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在用 Swift 编写的 Cocoa 应用程序中使用基于 View 的 NSTableView
,并希望在两个表列上实现排序功能。但是,在 Objective-C 中,您可以通过先在 Attribute Inspector 中设置“Sort Key”来实现它,然后实现名为 tableView: sortDescriptorsDidChange:
的数据源委托(delegate)方法。
但是,此方法将 sortDescriptor
作为参数并允许开发人员在方法中使用它,如下所示:
- (void) tableView:( NSTableView *) tableView sortDescriptorsDidChange:( NSArray *) oldDescriptors {
[self.songs sortUsingDescriptors:tableView.sortDescriptors];
[tableView reloadData];
}
但是,在 Swift Array 中,没有 sortUsingDescriptors
这样的方法。所以我首先尝试将 Array
转换为 NSMutableArray
以便使用 NSMutableArray
的方法,但是由于我的 Swift Array 被定义为 AnyObject[]
,它不能转换为 NSMutableArray
。
那么我应该如何在 Swift 中实现 TableView 的排序功能呢?我知道 Swift Array 可以使用 sort
函数通过比较两个参数并返回 bool 值来对对象进行排序,但是是否可以使用 sortDescriptors
对表进行排序?或者我应该忽略 sortDescriptors
参数,而是手动编写我自己的排序逻辑? (但是如果没有 sortDescriptors
值,我不知道如何判断点击了哪一列)。
最佳答案
至少现在最好的方法可能是首先将它转换为 NSMutableArray
,然后使用 NSMutableArray
的 sortUsingDescriptors
对其进行排序方法,最后将其转换回原始数组,如下所示:
func tableView(tableView: NSTableView!, sortDescriptorsDidChange oldDescriptors: [AnyObject]) {
var songsAsMutableArray = NSMutableArray(array: songs)
songsAsNSMutableArray.sortUsingDescriptors(tableView.sortDescriptors)
songs = songsAsNSMutableArray
tableView.reloadData()
}
顺便说一下,var songsAsMutableArray = songs as NSMutableArray
导致错误:NSArray is not a subtype of NSMutableArray
,所以我创建了一个NSMutableArray
实例如上所示。
关于cocoa - 如何使用 sortDescriptors 在 Swift 中对 NSTableView 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24602889/
我有一个歌曲实体和一个播放列表实体。 播放列表可以有多个歌曲,歌曲可以链接到多个播放列表。 我有一个 ListToSongs 实体,它维护将歌曲添加到播放列表的顺序。我没有在 ios5 中使用“有序关
我有一个 NSArrayController (A) 将其绑定(bind)到另一个 NSArrayController (B),我试图对 NSArrayController (B) 进行排序,但不起作
我有一个 Table View Controller,其中包含由 fetchResultsController 处理的 Formation 列表。 这是我的核心数据实体的样子: 我尝试按 dateRa
我有一个 NSTableView,其列绑定(bind)到 NSArrayController。 表格 View 显示电子邮件列表: 标记未读 主题 附件大小 用户可以单击“附件大小”列对列表进行排序,
如何设置我的 fetchedResultsController.sortDescriptors 以包含使用键路径的排序描述符,例如 @"foo.name"? 干杯 尼克 最佳答案 尽管NSSortDe
let dateSort = NSSortDescriptor(key: "created", ascending: false) fetchRequest.sortDescriptors = [da
我正在从核心数据中获取。我有一个 bool 值属性,它与时间属性一起保存。我需要返回 bool 为真的日期数组。我无法让它工作,我要么得到一组空日期,要么崩溃。 func datesWithCompl
我有一个 NSArray与 strings不遵循模式的对象,例如: D C A Z X。 当我尝试对类似的 array 进行排序时按升序,我得到: A C D X Z。 这不是我想要的结果,我需要实现
我在用 Swift 编写的 Cocoa 应用程序中使用基于 View 的 NSTableView,并希望在两个表列上实现排序功能。但是,在 Objective-C 中,您可以通过先在 Attribut
我有一个类型为“Restaurant”的数组,它的 NSSet 为“Rating”。评分有一个 ID 和一个值。 我想按 ID 为 01 的评分从高到低对餐厅的数组进行排序。 类似下面的内容,但如何在
两种获取 NSManagedObject 排序数组的方法,哪一种更好?或者它们之间有什么性能差异吗? /// Method 1: - use sortDescriptors let fetchRequ
我是一名优秀的程序员,十分优秀!