2013-08-21 9 views
6

Sto usando Magical Record per salvare i miei dati. Questi dati richiedono la crittografia, quindi sto cercando di combinarlo con la libreria SQLCipher (http://sqlcipher.net/ios-tutorial/).iOS Magical Record & SQLCipher

ho già configurato SQLCipher e testato con Core Data con successo, utilizzando il file EncryptedStore da questo esempio https://github.com/project-imas/encrypted-core-data:

quello che ho fatto è stato solo cambiato NSPersistentStoreCoordinator come questo:

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

Quindi penso di dover cambiare il modo in cui NSPersistentStoreCoordinator viene creato in MagicalRecord, ma non ho avuto fortuna con esso, quindi qualsiasi aiuto sarebbe apprezzato.

risposta

2

Se si dispone già di un coordinatore di negozio permanente, sarà necessario impostare manualmente lo stack di dati di base quando si utilizza MagicalRecord. Raccomando qualcosa in questo modo:

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

Potrebbe essere necessario esporre il metodo di inizializzazione da solo.

Come nota a margine, è possibile aggiungere un ticket al log dei problemi di MagicalRecord per aggiungere un metodo alla raccolta del metodo di installazione per specificare il proprio coordinatore in modo che questo lavoro venga gestito da MagicalRecord stesso.

+1

Ho già risolto il problema. Sono andato al passaggio Magico e cambiato nel metodo NSPersistentStoreCoordinator + MagicalRecord.m: + (NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreNamed: (NSString *) withOptions storeFileName: (*) NSDictionary opzioni differenza: NSPersistentStoreCoordinator * psc = [EncryptedStore makeStore: modello: @ "temp"]; // NSPersistentStoreCoordinator * psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: model]; Ora SQLCipher funziona con MagicalRecord –

+0

sì, probabilmente dovresti farlo in un modo "api pubbliche". Se sei bravo a mantenere la lib con le tue modifiche personalizzate, va bene. – casademora

+1

@ user1041311 Potresti aggiungere una risposta con la configurazione esatta che ha funzionato per te? – Kiran