魔法记录&适用于iOS的SQLCipher - NSPersistentStore创建返回nil

时间:2013-10-30 15:39:52

标签: ios encryption sqlcipher

我正在尝试将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

1 个答案:

答案 0 :(得分:2)

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

原来你不允许使用索引作为属性名称。

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