Я создаю основанное на данных приложение.Я добавил атрибут "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;