最初我已经改组了数组元素。现在我如何按照确定的顺序对这些数组元素进行排序。这是为了iOS中的纸牌游戏。
答案 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];
...
...
基本理念就是这样。你希望可以根据自己的问题调整这个。