0

iPhoneアプリでNSMutablArray値をAa-Zz形式で並べ替えようとしています。私は自分のプロジェクトで以下のコードを使用しました。

for (id key in [dictionary allKeys])
        {
            id value = [dictionary valueForKey:key];
            [duplicateArray addObject:value];
            [value release];
            value =nil;
            NSSortDescriptor *sortdis = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES] autorelease];
            NSArray *discriptor = [NSArray arrayWithObjects:sortdis,nil];
            mutableArray = [[duplicateArray sortedArrayUsingDescriptors:discriptor]retain];
        }   
        NSLog(@"mutableArray : %@", mutableArray);
[mutableArray sortUsingSelector:@selector(caseInsensitiveCompare:)];

このエラーログでアプリがクラッシュします:[__NSArrayI sortUsingSelector:]: unrecognized selector sent to instance.

しかし、私はクラッシュの理由を検索して見つけました。私のmutableArray値は次のようになります。

(
        {
        Id = 00001;
        Name = "ABCD";
    },
        {
        Id = 00002;
        Name = "BCDE";
    },
        {
        Id = 00003;
        Name = "ZXYS";
    },
        {
        Id = 00004;
        Name = "abcd";
    },
        {
        Id = 00009;
        Name = "bcde";
    },
)

ABCD、abcd、BCDE、bcde、 ZXYsのようなこの配列値をソートしたいと思います。誰かがこれを解決するのを手伝ってくれませんか。

4

2 に答える 2

1

ゴピナス。この更新されたコードをプロジェクトで使用してください。

    for (id key in [dictionary allKeys])
    {
        id value = [dictionary valueForKey:key];
        [duplicateArray addObject:value];
        [value release];
        value =nil;
        NSSortDescriptor *sortdis = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]autorelease];
        NSArray *discriptor = [NSArray arrayWithObjects:sortdis,nil];
        mutableArray = [[duplicateArray sortedArrayUsingDescriptors:discriptor]retain];
    }   
    NSLog(@"mutableArray : %@", mutableArray);

お役に立てば幸いです。ありがとう。

于 2012-06-30T11:29:22.130 に答える
0
    for (id key in [dictionary allKeys])
    {
        id value = [dictionary valueForKey:key];
        [duplicateArray addObject:value];
    }   
    NSSortDescriptor *sortdis = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]autorelease];
    NSArray *discriptor = [NSArray arrayWithObjects:sortdis,nil];
    NSArray* notAMutableArray = [[duplicateArray sortedArrayUsingDescriptors:discriptor]retain];
    NSLog(@"notAMutableArray : %@", notAMutableArray);

私はこれを実行しませんでしたが、より良いスタートです...

于 2012-06-30T11:53:50.573 に答える