Волшебная запись и 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, так что, возможно, начнем с нее, если вы еще не решили ее.

Другие вопросы по тегам