gpt4 book ai didi

iOS - 更新多个 CoreData 实体和上下文

转载 作者:行者123 更新时间:2023-11-28 21:39:59 24 4
gpt4 key购买 nike

我在我的应用程序中使用 CoreData,我有两个主要实体,比如说猫和狗。我有这个方法来初始化我的上下文:

     - (NSManagedObjectContext *)managedObjectContext
{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}

在我的App Delegate中引用了这个方法:

- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext != nil) {
return _managedObjectContext;
}

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return _managedObjectContext;
}

现在,在某个时候,我必须更新 Cats 实体中的一些数据。

           NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Cats"];
NSMutableArray *catsArrayData = [[context executeFetchRequest:fetchRequest error:nil] mutableCopy];
NSManagedObject *aCat = [catsArrayData objectAtIndex:i];
NSMutableArray *catsArray = [aCat valueForKey:@"cat"];
[catsArray addObject:responseData];
[aCat setValue:catsArray forKey:@"cat"];
NSError *error = nil;
[context save:&error];

然后,我想为我的 Dogs 实体做同样的事情。所以我使用相同的代码,但用于 dogs 实体。它在我代码的另一部分,所以我必须重新定义:

NSManagedObjectContext *context = [self managedObjectContext];

但问题是,虽然我保存了这第二个上下文,但实际上并没有保存。数据不存在。我该如何解决这个问题?

最佳答案

您需要实现自己的更改通知机制,这是学习它的好资源。 Multi-Context CoreData .

关于iOS - 更新多个 CoreData 实体和上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32543169/

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