我正在尝试对包含以下NSDictionaries的NSMutableArray进行排序:
{@“学生姓名”:约翰 @“平均考试成绩”:96.56}
{@“学生姓名”:玛丽 @“平均考试成绩”:93.45} ......
平均分数作为字符串存储在NSDictionary中,所以我使用以下代码:
NSArray *sortedResults = [studentResultsArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
return [[obj1[@"Average Test Score"] floatValue] compare:[obj2[@"Average Test Score"] floatValue]];}];
但是我收到错误提示:错误的接收器类型'float _Nullable'
有谁能告诉我如何解决这个问题,还是有其他方法来排序数组?
谢谢!
答案 0 :(得分:0)
需要在对象上调用compare:
方法。您正尝试在float
值上调用它。
更改此行:
return [[obj1[@"Average Test Score"] floatValue] compare:[obj2[@"Average Test Score"] floatValue]];}];
为:
return [obj1[@"Average Test Score"] compare:obj2[@"Average Test Score"]];}];
这样就可以在实际的NSString
对象上调用compare。
此更改将解决当前问题,但会向您显示另一个问题。这会将两个值比较为字符串,而不是数字。
正确的解决方案是将平均值存储为实际的NSNumber
个实例,而不是NSString
个实例。