Когда мое приложение запускается первым, я использую простой код для чтения в некоторых данных из источника, а затем сохраняю его на основные данные, которые будут считаны в будущем. Вот мой метод applicationDidFinishLaunching:Сохранение импортированных данных в Core Data - Не удается прочитать обратно
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
categories = [[NSMutableArray alloc] init];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"dataImported"]) {
NSMutableArray *temp_Categories = [[NSMutableArray alloc] initWithObjects:@"Food & Drink", @"Medical", @"Hotel", @"Travel", nil];
for(int i = 0; i < [temp_Categories count]; i++){
//Insert a new object of type ProductInfo into Core Data
NSManagedObject *categoryInfo = [NSEntityDescription
insertNewObjectForEntityForName:@"Category"
inManagedObjectContext:self.managedObjectContext];
//Set category entities values
[categoryInfo setValue:[temp_Categories objectAtIndex:i] forKey:@"categoryName"];
[categories addObject:[temp_Categories objectAtIndex:i]];
}
[defaults setObject:@"OK" forKey:@"dataImported"];
[defaults synchronize];
NSLog(@"Imported");
}
else {
//read from core data
NSError *error;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Category" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSMutableArray *temp_Categories = [[NSMutableArray alloc] initWithArray:[self.managedObjectContext executeFetchRequest:fetchRequest error:&error]];
for (int i = 0; i < [temp_Categories count]; i++){
NSString *category = [[temp_Categories objectAtIndex:i] objectForKey:@"categoryName"];
[categories addObject:category];
NSLog(@"Success");
}
NSLog(@"Read From Core");
}
return YES;
}
Когда я запускаю этот код в самый первый раз, он работает правильно, но когда я запускаю его в будущем (когда она считывается из основных данных) он не работает, это Безразлично» t читается в массиве из основных данных и temp_Categories count = 0. Может ли кто-нибудь объяснить, что я делаю неправильно? У меня такая же проблема, когда я пытаюсь сделать то же самое с файлом plist в другом приложении.
Спасибо,
Джек
EDIT 1 Я использую IOS 5.
EDIT 2 Скриншот модель данных:
Вы получаете предупреждение в этой строке? NSMutableArray * temp_Categories = [[NSMutableArray alloc] initWithArray: [self.managedObjectContext executeFetchRequest: fetchRequest error: & error]]; –
Нет, нет предупреждения. –
Попробуйте эту строку: NSMutableArray * temp_Categories = [[NSMutableArray alloc] initWithArray: [self.managedObjectContext executeFetchRequest: ошибка fetchRequest: & error] mutableCopy]; –