gpt4 book ai didi

ios - 如果应用程序第二次运行,从 executeFetchRequest 返回的记录为空

转载 作者:行者123 更新时间:2023-11-29 00:54:09 25 4
gpt4 key购买 nike

我在使用核心数据时遇到奇怪的数据丢失问题。

我使用以下代码将记录保存到核心数据。

    for (int i = 0; i < [domains count]; i++){

NSString *is_active = [[domains objectAtIndex:i] objectForKey:@"is_active"];
NSString *domain_id = [[domains objectAtIndex:i] objectForKey:@"domain_id"];
NSString *domain_name = [[domains objectAtIndex:i] objectForKey:@"domain_name"];

[context performBlockAndWait:^{
NSManagedObject *domain = [NSEntityDescription insertNewObjectForEntityForName:@"Domains" inManagedObjectContext:context];
[domain setValue:is_active forKey:@"isActive"];
[domain setValue:domain_id forKey:@"domainId"];
[domain setValue:domain_name forKey:@"domainName"];
}];
}

我使用以下代码来获取记录。

NSError *error;
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Domains"];

self.domainContext = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

NSLog(@"domain context %@",self.domainContext);

我正在使用真实设备进行测试。

如果我第一次在我的设备中运行该应用程序,self.domainContext 中会有一些内容。就好像我第二次运行应用程序而没有手动关闭应用程序一样, self.domainContext 中没有任何内容。但是,如果我手动关闭应用程序并重新运行应用程序,self.domainContext 已保存内容。为什么会这样?仅当我手动关闭应用程序时,数据才会持久保存到磁盘。如果我从 xcode 运行应用程序而不手动关闭应用程序,则数据不会被保留。

最佳答案

你没有保存上下文,所以你第二次丢失了数据。像这样更改您的代码

for (int i = 0; i < [domains count]; i++){

NSString *is_active = [[domains objectAtIndex:i] objectForKey:@"is_active"];
NSString *domain_id = [[domains objectAtIndex:i] objectForKey:@"domain_id"];
NSString *domain_name = [[domains objectAtIndex:i] objectForKey:@"domain_name"];

[context performBlockAndWait:^{
NSManagedObject *domain = [NSEntityDescription insertNewObjectForEntityForName:@"Domains" inManagedObjectContext:context];
[domain setValue:is_active forKey:@"isActive"];
[domain setValue:domain_id forKey:@"domainId"];
[domain setValue:domain_name forKey:@"domainName"];
}];
NSError *error = nil;
[context save:&error];
}

希望对您有所帮助。

关于ios - 如果应用程序第二次运行,从 executeFetchRequest 返回的记录为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37788829/

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