gpt4 book ai didi

app-store - 创建 addPersistentStoreWithType 方法使用的选项字典时应用程序崩溃

转载 作者:行者123 更新时间:2023-12-02 05:09:21 24 4
gpt4 key购买 nike

我正在使用 encrypted-core-data加密所有持久化的数据,以前很简单 CoreData正在使用。 persistentStoreCoordinator创建代码如下。

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}

NSURL *oldStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"VistaJetApp.sqlite"];
NSURL *newStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"VistaJet.sqlite"];
NSError *error = nil;

NSString *currentPassword = [[VJAesCryptoWrapper getInstance] getCurrentPassword];
NSDictionary *options = [self getEncryptedStoreOptionsWithPassword:currentPassword andDatabaseStore:newStoreURL];

_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

//if old store not exists , it means fresh installation
if([[NSFileManager defaultManager] fileExistsAtPath:oldStoreURL.path] == NO) {
if (![_persistentStoreCoordinator addPersistentStoreWithType:EncryptedStoreType configuration:nil URL:newStoreURL options:options error: &error]) {
}
} else {

if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:oldStoreURL options:@{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES} error: &error]) {
}

NSPersistentStore *oldUnsecureStore = [_persistentStoreCoordinator persistentStoreForURL:oldStoreURL];
[ConsoleLogger logText:[NSString stringWithFormat:@"Migration started"]];

//start migration
if(![_persistentStoreCoordinator migratePersistentStore:oldUnsecureStore toURL:newStoreURL options:options withType:EncryptedStoreType error:&error]) {


} else {
[[NSFileManager defaultManager] removeItemAtURL:oldStoreURL error:nil];
}

}

return _persistentStoreCoordinator;

}

创建选项字典
- (NSDictionary*)getEncryptedStoreOptionsWithPassword:(NSString*)password andDatabaseStore:(NSURL*)storeUrl {
return @{ EncryptedStorePassphraseKey: password,
EncryptedStoreDatabaseLocation: storeUrl,
NSMigratePersistentStoresAutomaticallyOption:@YES,
NSInferMappingModelAutomaticallyOption:@YES
};
}

我正在使用 KeychainItemWrapper 将密码保存在钥匙串(keychain)中我的代码在 getEncryptedStoreOptionsWithPassword:currentPassword 上完全崩溃了方法。应用程序已上线,我无法重现崩溃,但在 crashlytics 上显示了如此多的崩溃

crashlytics crash logs image

也使用 AESCrypt加密密码,然后使用 KeychainItemWrapper 将其保存到钥匙串(keychain).

观察:
crashlytics 显示的崩溃仅在我们使用分发配置文件上传测试飞行的构建时才会出现。

据 crashlytics 报道,iOS 11 上发生 100% 崩溃

最佳答案

我认为这是您看到的 iOS 10 中的一个已知错误,有一种解决方法:启用“钥匙串(keychain)共享”(在您的应用程序 -> Xcode 中的功能选项卡下)。

KeychainItemWrapper crash on iOS10

关于app-store - 创建 addPersistentStoreWithType 方法使用的选项字典时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50377324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com