gpt4 book ai didi

iphone - 核心数据保存成功,但数据库中没有数据

转载 作者:行者123 更新时间:2023-11-29 04:20:14 25 4
gpt4 key购买 nike

我一直致力于将 Core Data 添加到我的 iPhone 应用程序中,但遇到了一些非常令人沮丧的问题。当我在上下文中调用 save 时,保存成功返回,但是没有数据添加到我的数据库中(我在模拟器上运行它并查看 SQLITE 文件进行检查)。

我正在使用 this post 中的 MYDocumentHandler 类跨多个类使用单个UIManagedDocument。我在 AppDelegate 中运行代码,如下所示:

if (!self.document) {
[[MYDocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) {
self.document = document;
self.context = document.managedObjectContext;
[self loadView];
}];
}

一旦返回文档,loadView 方法就会设置我的 View Controller 。在我使用核心数据的 View Controller 中,我再次使用如下内容:

- (void)viewDidLoad
{
[super viewDidLoad];

if(!self.document){
[[MYDocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) {
self.document = document;
self.context = document.managedObjectContext;
[self loadAll];
}];
}


}

其中 loadAll 方法设置 View 的所有内容。当我尝试保存数据时,我使用以下内容:

for (int i = 0; i < [jsonArray count]; i++) {
NSDictionary *dictionary = [jsonArray objectAtIndex:i];
ProjectObject *tempProject = [[ProjectObject alloc] initWithDict:dictionary andETag:etag];
[tempAllProjects addObject:[Projects newProject:tempProject withContext:self.context]];
[tempProject release];
}


[self saveWithContext:self.context];

我的 saveWithContext 方法如下所示:

- (BOOL) saveWithContext:(NSManagedObjectContext *)context{
NSError *error = nil;

if (context != nil) {
if ([context hasChanges] && ![context save:&error]) {
DLog(@"Unresolved error %@, %@", error, [error userInfo]);
} else{
DLog(@"save was successful");
return YES;
}
}else{
DLog(@"context is nil");
return NO;
}
}

我总是收到保存成功消息,并且我从 MYDocumentHandler 文件中收到正确的消息。不幸的是,数据根本没有进入数据库。数据肯定存储在上下文中,但不会进入数据库。有什么想法吗?

编辑:这是我创建实体的代码:

+ (Projects *) newProject:(ProjectObject *)project withContext:(NSManagedObjectContext *)context
{
Projects *newProject = nil;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Projects"];
request.predicate = [NSPredicate predicateWithFormat:@"project_id = %@", project.project_id];
NSArray *results = [context executeFetchRequest:request error:nil];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if([results count] > 0){
newProject = [results objectAtIndex:0];
newProject.account_id = [NSString stringWithFormat:@"%@", [defaults objectForKey:@"account_id"]];

} else {
newProject = [NSEntityDescription insertNewObjectForEntityForName:@"Projects" inManagedObjectContext:context];
}

newProject.account_id = [NSString stringWithFormat:@"%@", [defaults objectForKey:@"account_id"]];
newProject.project_id = project.project_id;
newProject.name = project.name;
newProject.project_description = project.description;
newProject.updated_at = project.updated_at;
newProject.starred = project.starred;
newProject.etag = project.etag;

newProject.synced = [self hasConnection] ? [NSNumber numberWithInt:1] : [NSNumber numberWithInt:0];
return newProject;
}

最佳答案

我在 this 中找到了解决方案邮政。不确定这是否是处理它的最佳方法。如果有更好的选择,请告诉我。

关于iphone - 核心数据保存成功,但数据库中没有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070278/

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