我正在尝试将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
答案 0 :(得分:2)
今天我遇到了这个问题,在通过使用日志语句通过EncryptedStore.m进行了大量探讨后,我发现它无法创建新数据库,因为我添加了一个索引作为属性名称的实体。
原来你不允许使用索引作为属性名称。
我在EncryptedStore.m中的loadMetadata:function中发现了我的问题,所以如果你还没有解决它,可能会从那里开始。