1

配列内の各エントリに割り当てた最大数で配列をソートしようとしています。

しかし、私はそれが何もしていないと思います。エラーの可能性がある場所に関する提案はありますか?

ありがとう!

 - (NSArray*)sortByPercentage:(NSArray*)array {

    NSArray *inputArray = array;
    NSSortDescriptor *sortDescriptor = [[ NSSortDescriptor alloc] initWithKey:@"percentMatched" ascending:YES];

    //nov 8
    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
    NSArray *finalResult = [inputArray sortedArrayUsingDescriptors:sortDescriptors];
    [sortDescriptor release];
    return [NSArray arrayWithArray:finalResult];
}
4

1 に答える 1

1

あなたの並べ替えが機能しない理由に興味があります。これは次のことを行います。

#import <Foundation/Foundation.h>

@interface FooObject : NSObject
@property (nonatomic, assign) NSInteger value;
@property (readonly) NSInteger percentMatched;
@end

@implementation FooObject
@synthesize value;

//  compute percentMatched as an elementary function of value
- (NSInteger)percentMatched {
    return value * 2;
}
@end

int main(int argc, char *argv[]) {
    NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];

    FooObject *foo1 = [[FooObject alloc] init];
    foo1.value = 50;

    FooObject *foo2 = [[FooObject alloc] init];
    foo2.value = 5;

    FooObject *foo3 = [[FooObject alloc] init];
    foo3.value = 10;

    NSArray *myFoos = [NSArray arrayWithObjects:foo1,foo2,foo3,nil];
    NSArray *sorters = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"percentMatched" ascending:YES]];
    NSArray *mySortedFoos = [myFoos sortedArrayUsingDescriptors:sorters];
    for(FooObject *foo in mySortedFoos ) {
        printf("%ld ",foo.percentMatched);
    }
}

期待どおり10 20 100にコンソールに出力します。

于 2012-11-17T11:20:58.267 に答える