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 關注
- 652 瀏覽
添加回答
舉報