カスタム オブジェクトの配列があります。オブジェクトには status が含まれます: 支払済みまたは未払い。次のように配列を並べ替えたい: 最初のクリックで、配列を並べ替えて、最初に有料レコードを表示し、次に未払いレコードを表示します。2 回目のクリックで、配列を並べ替えて、未払いのレコード、次に有料のレコードを表示します。
助けはありますか?
カスタム オブジェクトの配列があります。オブジェクトには status が含まれます: 支払済みまたは未払い。次のように配列を並べ替えたい: 最初のクリックで、配列を並べ替えて、最初に有料レコードを表示し、次に未払いレコードを表示します。2 回目のクリックで、配列を並べ替えて、未払いのレコード、次に有料のレコードを表示します。
助けはありますか?
以下のようなステートメントを試すことができます:
NSSortDescriptor *Sorter = [NSSortDescriptor sortDescriptorWithKey:@"yourfield" ascending:YES selector:@selector(caseInsensitiveCompare:)];
[yourArray sortUsingDescriptors:[NSArray arrayWithObject:Sorter]];
次のようにできます:
- (IBAction)sort:(id)sender {
static BOOL isPaidFirst=YES;
NSSortDescriptor *Sorter = [NSSortDescriptor sortDescriptorWithKey:@"isPaid"
ascending:!isPaidFirst
selector:@selector(compare:)];
[self.array sortUsingDescriptors:[NSArray arrayWithObject:Sorter]];
isPaidFirst=!isPaidFirst;
for (MyObject *obj in self.array) {
NSLog(@"-->%@, %ld, %d",obj.courseName, obj.totalFee, obj.isPaid);
}
NSLog(@"------------------");
}
ここで MyObject は次のとおりです。
@interface MyObject : NSObject
@property(strong)NSString *courseName;
@property NSInteger totalFee;
@property BOOL isPaid;
@end