#sqlite #encryption #uimanageddocument
#sqlite #шифрование #uimanageddocument
Вопрос:
У меня есть приложение, которое использует Core Data через UIManagedObjectDocument. Я пытаюсь добавить шифрование в базовую базу данных SQLite с помощью зашифрованных основных данных (https://github.com/project-imas/encrypted-core-data ). Из описания для ECD мне нужно создать новый тип NSPersistentSroreCoordinator. Однако, похоже, я не могу сделать это с UIManagedObjectDocument, поскольку он создает свой собственный внутренний NSPersistenStoreCoordinator (который помечен как private).
Я создаю базу данных с помощью этой строки:
UIManagedDocument* managedDoc = [[UIManagedDocument alloc] initWithFileURL:url];
Я попытался создать подкласс UIManagedDocument и создать его таким образом, но безуспешно:
UIManagedDocument* managedDoc = [[EncryptedManagedDocument alloc] initWithFileURL:url];
И моя реализация класса:
@interface EncryptedManagedDocument()
@property (nonatomic,retain,readonly) NSPersistentStoreCoordinator *encryptedStoreCoordinator;
@end
@implementation EncryptedManagedDocument
@synthesize encryptedStoreCoordinator = _encryptedStoreCoordinator;
-(NSPersistentStoreCoordinator*)encryptedStoreCoordinator
{
if (_encryptedStoreCoordinator)
return _encryptedStoreCoordinator;
_encryptedStoreCoordinator = [EncryptedStore makeStore:[self managedObjectModel]:@"SOME_PASSCODE"];
return _encryptedStoreCoordinator;
}
-(NSPersistentStoreCoordinator*)persistentStoreCoordinator
{
return self.encryptedStoreCoordinator;
}
@end
Кто-нибудь знает правильный способ сделать это?
Спасибо!
Ответ №1:
Я собираюсь сказать, что это невозможно. UIManagedDocument прекрасно завершает работу и отлично экономит время в обычном случае, но для включения моего сценария я создал класс EncryptedManagedDocument, который похож на UIManagedDocument, но дал мне контроль над созданием моего собственного постоянного координатора хранилища.
Всем спасибо.