добавлен атрибут в разделы модели данных не работает - PullRequest
1 голос
/ 06 марта 2012

Я создаю основанное на данных приложение.Я добавил атрибут "category_en" в свою модель данных "Рецепт":

Recipe.h

@interface Recipe : NSManagedObject

@property (nonatomic, retain) NSString * category;
@property (nonatomic, retain) NSString * category_en;
@property (nonatomic, retain) NSString * cookingTime;
@property (nonatomic, retain) NSString * desc_en;
@property (nonatomic, retain) NSString * desc_it;
@property (nonatomic, retain) NSString * included;
@property (nonatomic, retain) NSString * ingredients_en;
@property (nonatomic, retain) NSString * ingredients_it;
@property (nonatomic, retain) NSString * name_en;
@property (nonatomic, retain) NSString * name_it;
@property (nonatomic, retain) NSString * photo;

@end

И создаю разделы в табличном представлении с помощью этого кода:

if ([currentLanguage isEqualToString:@"it"])
{
    NSSortDescriptor *sortDescriptor1 =
        [[NSSortDescriptor alloc] initWithKey: @"category" ascending: YES];
    NSSortDescriptor *sortDescriptor2 =
        [[NSSortDescriptor alloc] initWithKey: @"name_it" ascending: YES];
    [fetchRequest setSortDescriptors:
        [NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil]];
} else
{
    NSSortDescriptor *sortDescriptor1 =
        [[NSSortDescriptor alloc] initWithKey: @"category_en" ascending: YES];
    NSSortDescriptor *sortDescriptor2 = 
        [[NSSortDescriptor alloc] initWithKey: @"name_en" ascending: YES];
    [fetchRequest setSortDescriptors:
        [NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil]];
    }

и

if ([currentLanguage isEqualToString:@"it"]) {
    NSFetchedResultsController *aFetchedResultsController =
      [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest 
          managedObjectContext:managedObjectContext 
          sectionNameKeyPath:@"category"
          cacheName:@"Root"];
    self.fetchedResultsController = aFetchedResultsController;
} else {
    NSFetchedResultsController *aFetchedResultsController =
      [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest
                managedObjectContext:managedObjectContext 
                sectionNameKeyPath:@"category_en"
                cacheName:@"Root"];
    self.fetchedResultsController = aFetchedResultsController;
}

Когда я запускаю приложение, разделы видны только с использованием итальянского языка, а не на английском, который вместо этого выдает эту ошибку:

CoreData: error: (NSFetchedResultsController) A section returned nil value
for section name key path 'category_en'.
Objects will be placed in unnamed section

База данных SQL заполнена необходимыми данными иАтрибут category_en также устанавливается как необязательный.

ОБНОВЛЕНИЕ:

Я пытался с этим кодом ... все еще не работает ..

    NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey: NSLocalizedString(@"CATEGORY_KEY", nil) ascending: YES];
    NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey: NSLocalizedString(@"NAME_KEY", nil) ascending: YES];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil]];

    [NSFetchedResultsController deleteCacheWithName:@"Root"];

    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:NSLocalizedString(@"CATEGORY_KEY", nil)cacheName:@"Root"];
    self.fetchedResultsController = aFetchedResultsController;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...