Sqlite 如何在UIManagedDocument中重写NSPersistentStoreCoordinator

Sqlite 如何在UIManagedDocument中重写NSPersistentStoreCoordinator,sqlite,encryption,uimanageddocument,Sqlite,Encryption,Uimanageddocument,我有一个通过UIManagedObjectDocument使用核心数据的应用程序。我试图通过使用加密的核心数据()向底层SQLite数据库添加加密。根据ECD的描述,我需要创建一种新类型的NSPersistentSroreCoordinator。但是,我似乎无法对UIManagedObjectDocument执行此操作,因为它创建了自己的内部NSPersistenStoreCoordinator(标记为private) 我使用以下行创建数据库: UIManagedDocument* manage

我有一个通过UIManagedObjectDocument使用核心数据的应用程序。我试图通过使用加密的核心数据()向底层SQLite数据库添加加密。根据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
有人知道这样做的正确方法吗


谢谢

我想说这是不可能的。UIManagedDocument很好地完成了工作,对于常见情况来说是一个很好的节省时间的工具,但是为了启用我的场景,我创建了一个EncryptedManagedDocument类,它类似于UIManagedDocument,但允许我控制创建自己的持久存储协调器

谢谢大家