0

iOS アプリでコア データを使用しました。今私は 2 つの列がある 1 つのテーブルを持っています。

  1. カテゴリー

  2. 順序 (NSNumber 1、2、5 がある順序)

データを取得したいので、最初にカテゴリ名でアルファベット順に並べ替え、注文番号で並べ替えます。

以下のコードを使用しました:

NSEntityDescription *entity_Maintness = [NSEntityDescription
                                             entityForName:@"Maintness" inManagedObjectContext:__managedObjectContext];
    [fetchRequest_Maintness setEntity:entity_Maintness];


    NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"type" ascending:YES];

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"serialNumber" ascending:NO];


    NSArray *sortDescriptors12 = [[NSArray alloc] initWithObjects:sortDescriptor1, sortDescriptor, nil];
    [fetchRequest_Maintness setSortDescriptors:sortDescriptors12];

ただし、データはシリアル番号ではなくカテゴリでのみソートされます。

手伝ってくれてありがとう。

4

1 に答える 1

1

上記のコードは問題ないようです。コードのどこかに問題があるのではないでしょうか? ここに、出発点として役立つかもしれない、私がすぐに生成したコードがありますか??

#import "MainViewController.h"
#import "Maintness.h"

@interface MainViewController ()
@property (weak, nonatomic) IBOutlet UITextField *type;
@property (weak, nonatomic) IBOutlet UITextField *serialNumber;
@property (strong, nonatomic) NSManagedObjectContext *context;
- (IBAction)addButtonPressed:(id)sender;
- (IBAction)retrieveButtonPressed:(id)sender;

@end

@implementation MainViewController

#pragma mark - lazy instantiation
- (NSManagedObjectContext *)context{
    if (!_context){
        id appDelegate = (id)[[UIApplication sharedApplication] delegate];
        _context = [appDelegate managedObjectContext];
    }
    return _context;
}

#pragma mark - core data interactions
- (IBAction)addButtonPressed:(id)sender {
    NSError *error = nil;

    Maintness *newMaintness = nil;

    newMaintness = [NSEntityDescription insertNewObjectForEntityForName:@"Maintness" inManagedObjectContext:self.context];

    newMaintness.type = self.type.text;
    newMaintness.serialNumber = self.serialNumber.text;

    if (![self.context save:&error]) {
        NSLog(@"Oh no - error: %@", [error localizedDescription]);
    } else {
        NSLog(@"It appears the details were added ok");
    }

}

- (IBAction)retrieveButtonPressed:(id)sender {
    NSError *error = nil;
    // Set up fetch
    NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
    // Set up entity
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Maintness" inManagedObjectContext:self.context];
    [fetch setEntity:entity];
    // Set up sorting
    //   - sorts in order of array
    NSSortDescriptor *primarySortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"type" ascending:YES];
    NSSortDescriptor *secondarySortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"serialNumber" ascending:NO];
    NSArray *sortDescriptors = @[primarySortDescriptor, secondarySortDescriptor];
    [fetch setSortDescriptors:sortDescriptors];

    NSArray *results = [self.context executeFetchRequest:fetch error:&error];

    for (Maintness *result in results) {
        NSLog(@"type: %@ serial number: %@", result.type, result.serialNumber);
    }
}
@end

ここに画像の説明を入力

于 2013-09-15T05:24:43.653 に答える