2014-07-04 28 views
2

我有一个通过UIManagedObjectDocument使用Core Data的应用程序。我试图通过使用加密核心数据(https://github.com/project-imas/encrypted-core-data)将加密添加到基础SQLite数据库。从ECD描述中,我需要创建一个新的NSPersistentSroreCoordinator类型。但是,我似乎无法使用UIManagedObjectDocument来做到这一点,因为它创建了自己的内部NSPersistenStoreCoordinator(标记为private)。如何覆盖UIManagedDocument中的NSPersistentStoreCoordinator

我创建数据库这一行:

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 

有谁知道正确的方法来做到这一点?

谢谢!

回答

0

我要说这是不可能的。 UIManagedDocument很好地包装了东西,对于常见的情况来说是一个很好的时间保护程序,但是为了启用我的场景,我创建了一个类似于UIManagedDocument的EncryptedManagedDocument类,但给了我控制来创建自己的持久性存储协调器。

谢谢大家。