Поиск…


Вступление

SQLite уже является популярным API для постоянного хранения данных в приложениях iOS, поэтому потенциал роста для разработчиков очевиден. Как программист вы работаете со стабильным, хорошо документированным API, который, как оказалось, имеет много хороших оберток, доступных в Objective-C, таких как FMDB и Encrypted Core Data. Все проблемы безопасности полностью отделены от кода приложения и управляются базовой структурой.

замечания

  1. Откройте терминал, перейдите в корневой каталог вашего проекта и проверьте код проекта SQLCipher с помощью Git:
 $ git clone https://github.com/sqlcipher/sqlcipher.git
  1. Щелкните правой кнопкой мыши по проекту и выберите «Добавить файлы в« Мое приложение »» (ярлык будет меняться в зависимости от имени вашего приложения). Поскольку мы клонировали SQLCipher непосредственно в ту же папку, что и ваше приложение iOS, вы должны увидеть папку sqlcipher в корневой папке проекта. Откройте эту папку и выберите sqlcipher.xcodeproj

введите описание изображения здесь

  1. Выберите панель «Настройки сборки». В поле поиска введите «Пути поиска заголовков». Дважды щелкните поле под целевым столбцом и добавьте следующий путь: $ (PROJECT_DIR) / sqlcipher / src

  2. Начните вводить «Other Linker Flags» в поле поиска, пока не появится параметр, дважды щелкните его, чтобы изменить его, и добавьте следующее значение: $ (BUILT_PRODUCTS_DIR) /libsqlcipher.a

  3. Начните вводить «Other C Flags» в поле поиска до появления параметра, дважды щелкните его, чтобы изменить его, а во всплывающем окне добавьте следующее значение: -DSQLITE_HAS_CODEC

  4. Разверните «Зависимости целей» и нажмите кнопку «+» в конце списка. В открывшемся браузере выберите цель статической библиотеки sqlcipher :

введите описание изображения здесь

  1. Разверните ссылку «Бинарные ссылки» с библиотеками, нажмите кнопку «+» в конце списка и выберите библиотеку libsqlcipher.a .

введите описание изображения здесь

  1. Наконец, также в разделе «Связывание с библиотеками» добавьте Security.framework .

Интеграция кода:

Интеграция для открытия базы данных с использованием пароля.

-(void)checkAndOpenDB{
    sqlite3 *db;
    NSString *strPassword = @"password";

        if (sqlite3_open_v2([[databaseURL path] UTF8String], &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK) {
            const char* key = [strPassword UTF8String];
            sqlite3_key(db, key, (int)strlen(key));
            if (sqlite3_exec(db1, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) {
                NSLog(@"Password is correct, or a new database has been initialized");
            } else {
                NSLog(@"Incorrect password!");
            }
            sqlite3_close(db);
        }  
}

- (NSURL *)databaseURL
{
    NSArray *URLs = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
    NSURL *directoryURL = [URLs firstObject];
    NSURL *databaseURL = [directoryURL URLByAppendingPathComponent:@"database.sqlite"];
    return  databaseURL;
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow