如何覆盖UIManagedDocument中的NSPersistentStoreCoordinator

时间:2014-07-04 02:56:10

标签: sqlite encryption uimanageddocument

我有一个通过UIManagedObjectDocument使用Core Data的应用程序。我正在尝试使用加密核心数据(https://github.com/project-imas/encrypted-core-data)为基础SQLite数据库添加加密。从ECD的描述中,我需要创建一种新类型的NSPersistentSroreCoordinator。但是,我似乎无法使用UIManagedObjectDocument执行此操作,因为它创建了自己的内部NSPersistenStoreCoordinator(标记为私有)。

我用这一行创建数据库:

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 个答案:

答案 0 :(得分:0)

我要说这是不可能的。 UIManagedDocument可以很好地完成任务并且可以节省大量时间,但为了启用我的方案,我创建了一个类似于UIManagedDocument的EncryptedManagedDocument类,但是让我可以控制创建自己的持久存储协调器。

谢谢大家。