错误的接收器类型错误 "float_nullable"
Bad receiver type error "float_nullable"
我正在尝试对包含以下 NSDictionaries 的 NSMutableArray 进行排序:
{@"Student Name":约翰
@"Average Test Score": 96.56}
{@"Student Name":玛丽
@"Average Test Score":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]];}];
但我收到错误 prompt:Bad 接收器类型 'float _Nullable'
谁能告诉我如何解决这个问题,或者有其他方法可以对数组进行排序吗?
谢谢!
需要在对象上调用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
对象上调用比较。
此更改将解决眼前的问题,但会给您带来另一个问题。这会将两个值作为字符串进行比较,而不是数字。
正确的解决方案是将平均值存储为实际 NSNumber
个实例,而不是 NSString
个实例。
我正在尝试对包含以下 NSDictionaries 的 NSMutableArray 进行排序:
{@"Student Name":约翰 @"Average Test Score": 96.56}
{@"Student Name":玛丽 @"Average Test Score":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]];}];
但我收到错误 prompt:Bad 接收器类型 'float _Nullable'
谁能告诉我如何解决这个问题,或者有其他方法可以对数组进行排序吗?
谢谢!
需要在对象上调用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
对象上调用比较。
此更改将解决眼前的问题,但会给您带来另一个问题。这会将两个值作为字符串进行比较,而不是数字。
正确的解决方案是将平均值存储为实际 NSNumber
个实例,而不是 NSString
个实例。