最初我已经改组了数组元素,我如何对这些元素进行排序?

时间:2013-12-03 09:07:29

标签: ios objective-c

最初我已经改组了数组元素。现在我如何按照确定的顺序对这些数组元素进行排序。这是为了iOS中的纸牌游戏。

2 个答案:

答案 0 :(得分:1)

您可以使用sortedArrayUsingComparator:

对数组进行排序
[cards sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
{
    Card *c1 = (Card *)obj1;
    Card *c2 = (Card *)obj2;

    if (c1.value == c2.value) return NSOrderedSame;
    return (c1.value > c2.value) ? NSOrderedDescending : NSOrderedAscending;
}];

答案 1 :(得分:1)

您有几个选项,您可以查看NSArray文档here并查看“排序”。

有关快速信息,您可以使用NSSortDescriptors

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"distance" ascending:YES];
NSArray *sortedArray = [shuffledArray sortedArrayUsingDescriptors:@[sortDescriptor]];

它们易于使用,您可以添加多个排序描述符。 您也可以使用比较器

[sortedArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    // Do your check here and return values below
    // NSOrderedSame
    // NSOrderedDescending
    // NSOrderedAscending
}];

编辑:

好的,根据我从下面的评论中理解的是,你是一个最初洗牌的阵列。

NSArray *shuffledCards

我猜你在那个数组中有Card对象。如果你不这样做,我认为你应该这样做。然后有四个球员。我再次相信你有玩家对象。

为了举例:

@interface Card : NSObject
    @property (nonatomic) NSInteger cardNumber;
@end

@interface Player : NSObject
    @property (nonatomic) NSArray *dealtCards;
@end

假设您从混洗阵列中选择10张随机牌并将其发给每位玩家。

NSArray *randomTenCards = // You get 10 cards somehow

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"cardNumber" ascending:YES];
NSArray * sortedCards = [randomTenCards sortedArrayUsingDescriptors:@[sortDescriptor]];

// The Card objects are now sorted inside sortedCards array according to their cardNumbers.

[self.player1 setDealtCards:sortedCards];
...
...

基本理念就是这样。你希望可以根据自己的问题调整这个。