2013-08-21 14 views
6

Używam Magical Record do zapisywania moich danych. Te dane wymagają szyfrowania, więc próbuję połączyć je z biblioteką SQLCipher (http://sqlcipher.net/ios-tutorial/).Magiczny rekord iOS i SQLCipher iOS

już mam setup SQLCipher i przetestowane z danych Core powodzeniem, przy użyciu pliku EncryptedStore z tego przykładu https://github.com/project-imas/encrypted-core-data:

co zrobiłem było tylko zmienił NSPersistentStoreCoordinator tak:

NSPersistentStoreCoordinator * koordynator = [EncryptedStore makeStore: [self managedObjectModel]: [SSKeychain passwordForService: myservice account: myaccount]];

Uważam, że muszę zmienić sposób tworzenia NSPersistentStoreCoordinator w MagicalRecord, ale nie miałem z tym szczęścia, więc każda pomoc byłaby doceniana.

Odpowiedz

2

Jeśli masz już trwały koordynator sklepu, będziesz musiał ręcznie skonfigurować podstawowy stos danych podczas korzystania z MagicalRecord. Polecam coś podobnego:

NSPersistentStoreCoordinator *coordinator = //how ever you do it; 
[NSPersistentStoreCoordinator MR_setDefaultCoordinator:coordinator]; 
[NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator]; 

Może zaistnieć potrzeba samodzielnego ujawnienia metody inicjowania.

Jako notatkę dodatkową, możesz chcieć dodać bilet do logu problemów MagicalRecord, aby dodać metodę do kolekcji metod instalacji, aby określić własnego koordynatora, aby ta praca była obsługiwana przez samą MagicalRecord.

+1

Sam już rozwiązałem problem. Poszedłem krok po kroku przez Magical rekord i zmieniło się w sposobie NSPersistentStoreCoordinator + MagicalRecord.m: + (NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreNamed: (NSString *) withOptions storeFileName: (NSDictionary *) Opcje różnica: NSPersistentStoreCoordinator * PSC = [EncryptedStore makeStore: model: @ "temp"]; // NSPersistentStoreCoordinator * psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: model]; Teraz SQLCipher współpracuje z MagicalRecord –

+0

tak, prawdopodobnie powinieneś zrobić to w "publicznym api" w pewien sposób. Jeśli nie masz nic przeciwko utrzymywaniu lib przy niestandardowych zmianach, to jest fajne. – casademora

+1

@ user1041311 Czy możesz zamiast tego dodać odpowiedź z dokładną konfiguracją, która działała dla ciebie? – Kiran