У меня проблема с шифрованием SQLCipher db и CoreData: Когда я использую постоянный координатор хранилища с SQLCipher, он всегда терпит крах со связью "один ко многим" после первого перезапуска приложения. Поэтому, когда я впервые запускаю приложение, я создаю NSManagedObjects с отношениями, затем, когда я сохраняю db и снова открываю приложение, он падает, когда я пытаюсь получить доступ к этим отношениям. Без SQLCipher все работает нормально.
Вот код инициализации сохраненного хранилища SQLCipher:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (!_persistentStoreCoordinator) {
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyApp.sqlite"];
NSDictionary *options = @{EncryptedStorePassphraseKey: @"MyApp",
EncryptedStoreDatabaseLocation: storeURL};
NSError *error;
_persistentStoreCoordinator = [EncryptedStore makeStoreWithOptions:options managedObjectModel:[self managedObjectModel] error:&error];
if (error) {
NSLog(@"%@", error);
}
}
return _persistentStoreCoordinator;
}
Код, где я создаю NSManagedObject:
- (id)createObjectWithClassName:(NSString *)name
{
NSManagedObject *object = [[NSClassFromString(name) alloc] initWithEntity:[NSEntityDescription entityForName:name inManagedObjectContext:self.context] insertIntoManagedObjectContext:self.context];
return object;
}