Objective c 根据未显示的值对绑定到NSArrayController的NSTableView进行排序

Objective c 根据未显示的值对绑定到NSArrayController的NSTableView进行排序,objective-c,sorting,binding,nstableview,Objective C,Sorting,Binding,Nstableview,我有一个带有对象(可变字典)的NSArrayController,每个条目包含2个值。这些值是“关键字”和“顺序” NSArrayController绑定到只有一列且显示“关键字”值的NSTableView 我需要根据“顺序”对表格进行排序 但是NSTableView中的顺序没有更新。我错过了什么 ---编辑--- 如何进行排序的示例: 您没有使用描述符(NSArray*)或描述符来存储调用-(NSArray*)分拣机的结果,因此,您将永远无法访问它 但是,既然您已经在使用NSArrayCont

我有一个带有对象(可变字典)的
NSArrayController
,每个条目包含2个值。这些值是“关键字”和“顺序”

NSArrayController
绑定到只有一列且显示“关键字”值的NSTableView

我需要根据“顺序”对表格进行排序

但是
NSTableView
中的顺序没有更新。我错过了什么

---编辑---

如何进行排序的示例:


您没有使用描述符(NSArray*)或描述符来存储调用
-(NSArray*)分拣机的结果,因此,您将永远无法访问它

但是,既然您已经在使用
NSArrayController
,为什么不直接使用
NSArrayController
-(void)setOrtDescriptors:(NSArray*)sortDescriptors
方法,然后使用
-(id)arrangedObjects
引用数组的内容呢


具有数值比较的字符串的自定义排序描述符

[keywordscontroller setSortDescriptor:[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES comparator:^(id obj1, id obj2) {
    return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];

对不起,这里很绿,我不知道我在跟踪。你能详细解释一下吗?好的,我想我明白你的意思了。我现在遇到的问题是,“order”是Double类型,但排序将其视为字符串。你知道如何将它声明为double吗?当你说“将它视为字符串”时,你的确切意思是什么?你能举个例子吗?当然!如果我的值是双精度的“1.0,5.0,10.0”,我希望它们的排序和我在这里写的一样。从小到高。出于某种原因,它是这样排序的:1.0,10.0,5.0,因为10.0的第一个数字是1,它在我看到的5.0之前。这不是我以前遇到过的事情,但似乎并不完全不同寻常。所比较的值确实存储为
NSNumber
的实例,对吗?如果您确定它们是这样存储的,那么您可以尝试使用
+(id)sortddescriptorwithkey:(NSString*)键升序:(BOOL)升序比较器:(NSComparator)cmptr
(请参见上面的编辑)。
[keywordscontroller setSortDescriptor:[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES comparator:^(id obj1, id obj2) {
    return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];