Когда мое приложение запускается впервые, я использую простой код для считывания некоторых данных из источника, а затем сохраняю их в базовые данные для последующего чтения в будущем.Вот мой метод applicationDidFinishLaunching:
- (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;
}
Когда я запускаю этот код в первый раз, он работает правильно, однако, когда я запускаю его в будущем (когда он читает из основных данных), он не работает, онне читает в массиве из базовых данных и счетчика temp_Categories = 0. Может кто-нибудь объяснить, что я делаю неправильно?У меня такая же проблема при попытке сделать то же самое с файлом plist в другом приложении.
Спасибо,
Джек
РЕДАКТИРОВАТЬ 1 Я использую iOS 5.
РЕДАКТИРОВАТЬ 2 Скриншот модели данных: