Szukaj…


Wprowadzenie

SQLite jest już popularnym interfejsem API do przechowywania danych w aplikacjach na iOS, więc jego zalety są oczywiste. Jako programista pracujesz ze stabilnym, dobrze udokumentowanym API, który akurat ma wiele dobrych opakowań dostępnych w Objective-C, takich jak FMDB i Encrypted Core Data. Wszystkie kwestie bezpieczeństwa są czysto oddzielone od kodu aplikacji i są zarządzane przez podstawową strukturę.

Uwagi

  1. Otwórz terminal, przejdź do katalogu głównego swojego projektu i sprawdź kod projektu SQLCipher za pomocą Git:
 $ git clone https://github.com/sqlcipher/sqlcipher.git
  1. Kliknij projekt prawym przyciskiem myszy i wybierz „Dodaj pliki do” Mojej aplikacji ”(etykieta będzie się różnić w zależności od nazwy aplikacji). Ponieważ sklonowaliśmy SQLCipher bezpośrednio w tym samym folderze co twoja aplikacja na iOS, powinieneś zobaczyć folder sqlcipher w głównym folderze projektu. Otwórz ten folder i wybierz sqlcipher.xcodeproj

wprowadź opis zdjęcia tutaj

  1. Wybierz panel Ustawienia kompilacji. W polu wyszukiwania wpisz „Ścieżki wyszukiwania nagłówka”. Kliknij dwukrotnie pole pod kolumną docelową i dodaj następującą ścieżkę: $ (PROJECT_DIR) / sqlcipher / src

  2. Zacznij wpisywać „Inne flagi linkera” w polu wyszukiwania, aż pojawi się ustawienie, kliknij dwukrotnie, aby je edytować, i dodaj następującą wartość: $ (BUILT_PRODUCTS_DIR) /libsqlcipher.a

  3. Zacznij wpisywać „Inne flagi C” w polu wyszukiwania, aż pojawi się ustawienie, kliknij dwukrotnie, aby je edytować, aw wyskakującym okienku dodaj następującą wartość: -DSQLITE_HAS_CODEC

  4. Rozwiń Zależności docelowe i kliknij przycisk + na końcu listy. W przeglądarce, która zostanie otwarta, wybierz cel biblioteki statycznej sqlcipher :

wprowadź opis zdjęcia tutaj

  1. Rozwiń łącze Pliki binarne z bibliotekami, kliknij przycisk + na końcu listy i wybierz bibliotekę libsqlcipher.a .

wprowadź opis zdjęcia tutaj

  1. Na koniec, również w obszarze Link z bibliotekami dodaj Security.framework .

Integracja kodu:

Integracja w celu otwarcia bazy danych za pomocą hasła.

-(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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow