3 回答
TA贡献2003条经验 获得超2个赞
通过包装在NSNumber下来保存浮点数,然后
NSNumber *max=[numberArray valueForKeyPath:@"@max.doubleValue"];
NSNumber *min=[numberArray valueForKeyPath:@"@min.doubleValue"];
* 未编译检查,已经用intValue检查,不确定double或float
TA贡献1712条经验 获得超3个赞
我同意先对数组进行排序,然后选择第一个和最后一个元素,但是我发现此解决方案更优雅(通过更改块内的比较,该解决方案也适用于非数字对象):
NSArray *unsortedArray = @[@(3), @(5), @(1)];
NSArray *sortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSNumber *item1 = (NSNumber *)obj1;
NSNumber *item2 = (NSNumber *)obj2;
return [item1 compare:item2];
}];
如果您真的想花哨并且列表很长并且不想阻塞主线程,那么应该可以这样做:
NSComparator comparison = ^NSComparisonResult(id obj1, id obj2) {
NSNumber *item1 = (NSNumber *)obj1;
NSNumber *item2 = (NSNumber *)obj2;
return [item1 compare:item2];
};
void(^asychSort)(void) = ^
{
NSArray *sortedArray = [unsortedArray sortedArrayUsingComparator:comparison];
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"Finished Sorting");
//do your callback here
});
};
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), asychSort);
- 3 回答
- 0 关注
- 620 浏览
添加回答
举报