接收器类型错误“float_nullable”

时间:2016-05-06 21:41:03

标签: ios objective-c sorting nsarray

我正在尝试对包含以下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'

有谁能告诉我如何解决这个问题,还是有其他方法来排序数组?

谢谢!

1 个答案:

答案 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个实例。