Objective c 使用比较器的分拣机无法准确工作
我正在尝试对数组进行排序,但它似乎无法可靠地工作 这是用于排序的代码。基本上,请求优先级ID的值为1-5 例如: 有时它的排序正确1-5,但有时它排序1 2 4 5 3 然后,当我去查看NSLog时,它会吐出非常大的值,而它们应该是1-5 下面是示例输出Objective c 使用比较器的分拣机无法准确工作,objective-c,sorting,nsarray,nsnumber,Objective C,Sorting,Nsarray,Nsnumber,我正在尝试对数组进行排序,但它似乎无法可靠地工作 这是用于排序的代码。基本上,请求优先级ID的值为1-5 例如: 有时它的排序正确1-5,但有时它排序1 2 4 5 3 然后,当我去查看NSLog时,它会吐出非常大的值,而它们应该是1-5 下面是示例输出 值B 168492640 值A:168492640 值B 168492640 价值A:174580912 值B 168492640 价值A:174580912 值B 168492640 价值A:174580912 值B 168492640
值B 168492640
值A:168492640
值B 168492640
价值A:174580912
值B 168492640
价值A:174580912
值B 168492640
价值A:174580912
值B 168492640
价值A:174580912
值B 168492640
值A:174580912
发生了什么事?谢谢大家! 在调试器显示中,
[(请求*)优先级ID]
似乎是一个NSNumber
,但是
您将其视为整数(因此您实际上是在比较对象的地址)
以下各项应能发挥作用:
sortedArray = [self.selectedReqArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSNumber *first = [(Request*)a priorityID];
NSNumber *second = [(Request*)b priorityID];
return [first compare:second];
}];
写这篇文章的一种可能稍微优雅一点的方式是
sortedArray = [self.selectedReqArray sortedArrayUsingComparator:^NSComparisonResult(Request* a, Request* b) {
NSNumber *first = [a priorityID];
NSNumber *second = [b priorityID];
return [first compare:second];
}];
如果请求
类与密钥优先级ID
的键值编码兼容,则
以下方面也应发挥作用:
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"priorityID" ascending:YES];
sortedArray = [self.selectedReqArray sortedArrayUsingDescriptors:@[sort]];
从调试器显示中,
[(请求*)优先级ID]
似乎是一个NSNumber
,但是
您将其视为整数(因此您实际上是在比较对象的地址)
以下各项应能发挥作用:
sortedArray = [self.selectedReqArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSNumber *first = [(Request*)a priorityID];
NSNumber *second = [(Request*)b priorityID];
return [first compare:second];
}];
写这篇文章的一种可能稍微优雅一点的方式是
sortedArray = [self.selectedReqArray sortedArrayUsingComparator:^NSComparisonResult(Request* a, Request* b) {
NSNumber *first = [a priorityID];
NSNumber *second = [b priorityID];
return [first compare:second];
}];
如果请求
类与密钥优先级ID
的键值编码兼容,则
以下方面也应发挥作用:
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"priorityID" ascending:YES];
sortedArray = [self.selectedReqArray sortedArrayUsingDescriptors:@[sort]];
你就是炸弹!是的,这解决了问题,我把它改成了优雅的版本。谢谢!你就是炸弹!是的,这解决了问题,我把它改成了优雅的版本。谢谢!