如何覆盖 UIManagedDocument 中的 NSPersistentStoreCoordinator

问题描述 投票:0回答:2

我有一个通过 UIManagedObjectDocument 使用 Core Data 的应用程序。 我正在尝试使用加密核心数据(https://github.com/project-imas/encrypted-core-data)向底层 SQLite 数据库添加加密。 根据 ECD 的描述,我需要创建一种新类型的 NSPercientSroreCoordinator。 但是,我似乎无法使用 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

有人知道正确的方法吗?

谢谢!

sqlite encryption uimanageddocument
2个回答
0
投票

我想说这是不可能的。 UIManagedDocument 很好地包装了一切,对于常见情况来说可以节省很多时间,但为了实现我的场景,我创建了一个类似于 UIManagedDocument 的 EncryptedManagedDocument 类,但让我可以控制创建自己的持久存储协调器。

谢谢大家。


0
投票

您能分享一下您是如何实现 EncryptedManagedDocument 的吗?

© www.soinside.com 2019 - 2024. All rights reserved.