gpt4 book ai didi

ios - SQLCipher 和 CoreData 问题 : CoreData could not fulfill a fault for

转载 作者:技术小花猫 更新时间:2023-10-29 10:27:59 30 4
gpt4 key购买 nike

我对 SQLCipher 数据库加密和 CoreData 有疑问:当我将持久存储协调器与 SQLCipher 一起使用时,它总是在第一次应用程序重新启动后因一对多关系故障而崩溃。因此,当我第一次启动该应用程序时,我创建了具有关系的 NSManagedObjects,然后,当我保存数据库并重新打开该应用程序时,当我尝试访问这些关系时它崩溃了。没有 SQLCipher 一切正常。

这是 SQLCipher 持久存储初始化的代码:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (!_persistentStoreCoordinator) {
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyApp.sqlite"];
NSDictionary *options = @{EncryptedStorePassphraseKey: @"MyApp",
EncryptedStoreDatabaseLocation: storeURL};
NSError *error;
_persistentStoreCoordinator = [EncryptedStore makeStoreWithOptions:options managedObjectModel:[self managedObjectModel] error:&error];
if (error) {
NSLog(@"%@", error);
}
}

return _persistentStoreCoordinator;
}

创建 NSManagedObject 的代码:

- (id)createObjectWithClassName:(NSString *)name
{
NSManagedObject *object = [[NSClassFromString(name) alloc] initWithEntity:[NSEntityDescription entityForName:name inManagedObjectContext:self.context] insertIntoManagedObjectContext:self.context];
return object;
}

最佳答案

最后我自己找到了答案。

我调查了不同的案例,并认为该问题只发生在我的数据模型中。

问题是我在 NSManagedObject 类中有一个名为“index”的属性。

看起来 SQLCipher 内部使用了这样的属性并且与它有冲突。一旦我将其重命名为另一个名称,一切正常!

关于ios - SQLCipher 和 CoreData 问题 : CoreData could not fulfill a fault for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27312344/

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