Open anataffy opened 7 years ago
@anataffy it is hard to read your question. Please, use backquotes to format code, e.g.
NSString *code = @"code";
Code sample should start with three backquotes sequence.
Also add objective-c after first three backquotes.
Learn about markdown and all related stuff here:
I got the same issue. V3.1 retrieved thru CocoaPods Pinned it down to EncryptedStore.m
method:
+ (NSPersistentStoreCoordinator *)makeStoreWithOptions:(NSDictionary *)options managedObjectModel:(NSManagedObjectModel *)objModel error:(NSError *__autoreleasing *)error
calls:
[persistentCoordinator addPersistentStoreWithType:EncryptedStoreType configuration:nil URL:databaseURL
options:options error:error];
if (*error)
{
NSLog(@"Unable to add persistent store.");
NSLog(@"Error: %@\n%@\n%@", *error, [*error userInfo], [*error localizedDescription]);
}
return persistentCoordinator;
that returned persistentCoordinator doesn't contain store and error is nil so no log either
Pinned down issue to bug in:
- (BOOL)setDatabasePassphrase:(NSString *)passphrase error:(NSError *__autoreleasing*)error {
BOOL result;
int status;
if ([passphrase length] > 0) {
// Password provided, use it to key the DB
const char *string = [passphrase UTF8String];
status = sqlite3_key(database, string, (int)strlen(string));
} else {
[...]
Crash scenario is:
fix is:
- const char *string = [passphrase UTF8String];
- status = sqlite3_key(database, string, (int)strlen(string));
+ NSData *passBytes = [passphrase dataUsingEncoding:NSUTF8StringEncoding];
+ status = sqlite3_key(database, passBytes.bytes, passBytes.length);
and similar changes in changeDatabasePassphrase method too
I look forward to your PR.
Hi, I have the same error when I updated from master folder. Any solution for this?
This is my App.delegate When I run the app it crashes with the following error This NSPersistentStoreCoordinator has no persistent stores (unknown). It cannot perform a save operation
Some advice??
pragma mark - Core Data stack
@synthesize managedObjectContext = _managedObjectContext; @synthesize managedObjectModel = _managedObjectModel; @synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
(NSURL *)applicationDocumentsDirectory { // NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; }
(NSManagedObjectModel *)managedObjectModel { // The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
if (_managedObjectModel != nil) { return _managedObjectModel; } NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"AWARE" withExtension:@"momd"]; _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; return _managedObjectModel;
}
(NSPersistentStoreCoordinator *)persistentStoreCoordinator { // The persistent store coordinator for the application. This implementation creates and return a coordinator, having added the store for the application to it. if (_persistentStoreCoordinator != nil) { return _persistentStoreCoordinator; }
// Create the coordinator and store NSURL storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"AWARE.sqlite"]; NSError error = nil; _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); }
return _persistentStoreCoordinator; }
(NSManagedObjectContext *)managedObjectContext { if (_managedObjectContext != nil) { return _managedObjectContext; }
NSPersistentStoreCoordinator *coordinator;
//coordinator = [EncryptedStore makeStore:[self managedObjectModel] passcode:@"SOME_PASSWORD"]; //#elif USE_ENCRYPTED_STORE == 2 //
[[NSFileManager defaultManager] createDirectoryAtURL:[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] withIntermediateDirectories:NO attributes:nil error:nil];
NSURL *databaseURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:[NSString stringWithFormat:@"AWARE.sqlite"]];
int cache = 2345; EncryptedStoreOptions options; options.passphrase = "SOME_PASSWORD"; options.database_location = (char*)[[databaseURL description] UTF8String]; options.cache_size = &cache;
coordinator = [EncryptedStore makeStoreWithStructOptions:&options managedObjectModel:[self managedObjectModel]]; // //#elif USE_ENCRYPTED_STORE == 3 //
// [[NSFileManager defaultManager] createDirectoryAtURL:[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] withIntermediateDirectories:NO attributes:nil error:nil]; // // NSURL *databaseURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:[NSString stringWithFormat:@"FailedBankCD.sqlite"]]; //
// coordinator = [EncryptedStore makeStoreWithOptions:@{ // EncryptedStorePassphraseKey : @"SOME_PASSWORD", // EncryptedStoreDatabaseLocation : [databaseURL description], // EncryptedStoreCacheSize : @(2345)} // managedObjectModel:[self managedObjectModel]]; //#else // coordinator = [self persistentStoreCoordinator]; //#endif
if (!coordinator) { return nil; } _managedObjectContext = [[NSManagedObjectContext alloc] init]; [_managedObjectContext setPersistentStoreCoordinator:coordinator]; return _managedObjectContext; }
pragma mark - Core Data Saving support