3 回答

TA貢獻2003條經(jīng)驗 獲得超2個贊
通過包裝在NSNumber下來保存浮點數(shù),然后
NSNumber *max=[numberArray valueForKeyPath:@"@max.doubleValue"];
NSNumber *min=[numberArray valueForKeyPath:@"@min.doubleValue"];
* 未編譯檢查,已經(jīng)用intValue檢查,不確定double或float

TA貢獻1712條經(jīng)驗 獲得超3個贊
我同意先對數(shù)組進行排序,然后選擇第一個和最后一個元素,但是我發(fā)現(xiàn)此解決方案更優(yōu)雅(通過更改塊內(nèi)的比較,該解決方案也適用于非數(shù)字對象):
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];
}];
如果您真的想花哨并且列表很長并且不想阻塞主線程,那么應(yīng)該可以這樣做:
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 關(guān)注
- 651 瀏覽
添加回答
舉報