我有一个NSArray,数组是这样的数字;
NSArray *ratio = [NSArray arrayWithObjects:@"99",@"88",@"77", @"66", @"55", @"44",@"33", @"22",@"11",@"0",@"-11",@"-22",@"-33",@"-44",@"-55",@"-66",@"-77",@"-88",@"-99",@"-100",nil];
我想拍摄最大的物体99和最小的物体-100 hiw我可以这样做吗?
我将使用if条件这样的最大对象;
if ([[ratio objectAtIndex:i] intValue] == 100 ) {
rd = 0;
gr = 0.5;
bl =0;
}
//我想这样做
if ([[ratio objectAtIndex:i] intValue] == biggestobject or smallestobject ) {
///.....
}
帮助请给我的朋友:( - 现在解决问题但是下面还有另一个问题。
第二个问题:(
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO];
NSLog(@"%@",[ratio sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]]);
我对数组进行了排序,但无法从数组中选择最大和最小的对象。我怎么能这样做?
NSLog屏幕就像这样; 99,99,99,91,91,88,88,88,88,77,77,66,66,66,
我如何使用objectforkey:0在排序数组
答案 0 :(得分:1)
一种方法是对数组进行排序并获取第一个和最后一个索引。
答案 1 :(得分:1)
这将解决您的问题:
NSInteger maxValue = 0, minValue = 0;
BOOL firstIteration = YES;
for(id item in ratio) {
NSInteger intValue = [item integerValue];
if( firstIteration ) {
maxValue = intValue;
minValue = intValue;
firstIteration = NO;
continue;
}
if( intValue < minValue ) minValue = intValue;
if( intValue > maxValue ) maxValue = intValue;
}
答案 2 :(得分:0)
编写此方法以按照您定义的方式对两个字符串进行排序,请注意NSNumericSearch
。 See Documentation here.
NSComparisonResult sortNums(NSString *s1, NSString *s2, void *context) {
return [s2 compare:s1 options:NSNumericSearch];
}
然后使用:
排序NSArray *sorted = [unsorted sortedArrayUsingFunction:sortNums context:nil];
答案 3 :(得分:0)
获取值,而不是以下代码:
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO];
NSLog(@"%@",[ratio sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]]);
你需要使用:
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO];
NSArray *sortedArray = [ratio sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
NSLog(@"max item: %@, min item: %@", [soretedArray objectAtIndex:0], [sortedArray lastObject]);