我有一个核心数据模型:
有时,当我试图插入一个"BoissonCave“元素时,我的应用程序崩溃了。这就是它发生的地方(我从包含JSON数据的数组"values“中读取数据):
let boissonCave = BoissonCave(context: context)
[...]
if let _regionId = values["regionId"] as? Int16 {
let region = CoreDataStack.sharedInstance.getRegion(ofId: Int(_regionId))
bois
我们在一个与删除多个上下文对象相关的应用程序中遇到了奇怪的行为。
在删除背景上下文中的对象后,它仍然存在于其父.的关系中。
删除使用existingObjectWithID,获取的对象时发生错误,但在使用objectWithID或通过executeFetchRequest.删除对象时不会发生错误。
但是,由于文档表明existingObjectWithID是一种更安全的使用方法,所以我们宁愿不改变它,并可能在其他地方引入崩溃。
示例
在下面的输出中,创建了5个子对象,然后逐个删除。
设置
Children by fetchRequest in mainContext: 5
Children b
我的情况是,我的应用程序使用核心数据,并且需要从该核心数据加载图像以在表视图中显示。由于执行此操作所需的时间,它需要在后台线程中运行。所以我有这样的代码:
dispatch_async(queue, ^{
if (self.cellInfo.numberOfMediaItems > 0) {
int i = 0;
int numberOfThumbnails = MIN(self.cellInfo.numberOfMediaItems, 3);
while (i < numberOfThumbnails) {
你好,我有一个对象在我的coreData中注册为实体,它继承自NSManagedObject。
创建并保存对象的调用如下:
let user = User(context: PersistenceService.context)
user.name = "My name"
user.address = "My Address"
但是,我并不总是希望,当我创建对象时,它被记录在持久性中,我也希望能够这样称呼它:
let user = User()
user.name = "My name"
user.addr
我使用的是MagicalRecord 2.0.3,我真的不知道如何在后台保存数据。
根据文档,像这样的东西应该是有效的:
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {
// Do this hundreds of times
[MyObject createInContext:localContext];
}];
但是,不会将任何内容保存到数据库。我见过很多人发布类似这样的解决方案:
[MagicalRecord saveInBackgroundWithBlo
我正在制作一个应用程序,它解析链接返回的XML,并使用Core数据保存数据。问题是,为了使UI保持响应性,我必须在后台线程中完成我的所有解析。在谷歌了一段时间之后,我在我的AppDelegate中设置了两个上下文,一个用于处理后台解析,另一个用于加载UI。
首先:这是为我的情况建立两种情境的正确方式吗?
//In AppDelegate.m
//This one is for parsing in the background
- (NSManagedObjectContext *)backgroundManagedObjectContext {
if (_backgroundMan
// Getting the main context:
let mainContext = appDelegate.persistentContainer.viewContext
// Creating a child context:
let childContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
childContext.parent = mainContext
print(childContext.automaticallyMergesChangesFromParent)