Волшебная запись и SQLCipher для iOS - создание NSPersistentStore возвращает ноль
Я пытаюсь добавить SQLCipher в проект iOS, который использует библиотеку Magical Record для шифрования базы данных. Также используется класс EncryptedStore из проекта encrypted-core-data: 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
};
У меня проблема, когда результирующий объект NSPersistentStore* не создается (возвращает ноль) при использовании типа EncryptedStoreType. Возвращенный код ошибки также равен нулю.
Используемая библиотека SQLCipher является коммерческой версией iOS, в которой уже содержится openSSL. С интеграцией SQLCipher все в порядке, я могу нормально использовать зашифрованную базу данных при тестировании в проекте encrypted-core-data.
Возможно, это длинный путь, но кто-нибудь сталкивался с подобной проблемой при интеграции SQLCipher с Magical Record - любой совет приветствуется.
Заранее спасибо 2J
1 ответ
У меня была эта проблема сегодня, после долгих разговоров по EncryptedStore.m с инструкциями журнала, которые я обнаружил, что не удается создать новую базу данных, потому что я добавил сущность с индексом в качестве имени атрибута.
Оказывается, вы не можете использовать индекс в качестве имени атрибута.
Я нашел свою проблему в функции loadMetadata: в EncryptedStore.m, так что, возможно, начнем с нее, если вы еще не решили ее.