1

我正在尝试将 SQLCipher 添加到使用 Magical Record 库以加密数据库的 iOS 项目中。还使用来自 encrypted-core-data 项目的 EncryptedStore 类:https ://github.com/project-imas/encrypted-core-data 。

遵循iOS Magical Record & SQLCipher后的说明

我已将方法编辑- (NSPersistentStore *) MR_addSqliteStoreNamed:(id)storeFileName withOptions:(__autoreleasing NSDictionary *)options 为..

[coordinator
                                    addPersistentStoreWithType:EncryptedStoreType
                                    configuration:nil
                                    URL:databaseURL
                                    options:options
                                    error:&error];

有选项:

NSDictionary *options = @{
                            EncryptedStorePassphraseKey : @"the_password",
                            NSMigratePersistentStoresAutomaticallyOption : @YES,
                            NSInferMappingModelAutomaticallyOption : @YES
                            };

如果使用类型 EncryptedStoreType,我有一个问题,即未创建生成的 NSPersistentStore* 对象(返回 nil)。返回的错误代码也为零。

使用的 SQLCipher 库是商业 iOS 版本,其中已包含 openSSL。SQLCipher 的集成似乎没问题,在加密核心数据项目中进行测试时,我能够很好地使用加密数据库。

可能是一个很长的镜头,但是在将 SQLCipher 与 Magical Record 集成时是否有人遇到过类似的问题 - 任何建议表示赞赏。

提前致谢 2J

4

1 回答 1

2

我今天遇到了这个问题,在使用日志语句对 EncryptedStore.m 进行了大量探索之后,我发现它无法创建新数据库,因为我添加了一个带有索引作为属性名称的实体。

事实证明,您不允许使用 index 作为属性名称。

我在 EncryptedStore.m 中的 loadMetadata: 函数中发现了我的问题,所以如果你还没有解决它,也许可以从那里开始。

于 2013-11-12T20:40:43.400 回答