Ios 从父NSManagedObjectContext获取核心数据失败
我使用父/子Ios 从父NSManagedObjectContext获取核心数据失败,ios,core-data,nsmanagedobjectcontext,Ios,Core Data,Nsmanagedobjectcontext,我使用父/子NSManagedObjectContext结构在单独的线程中执行一些核心数据操作。操作及其代码的顺序如下: 1)删除核心数据中的所有条目(使用父/子结构) 2)向核心数据插入新条目(使用父/子结构) 一切的顺序如上所述。现在一切似乎都很好,主线程在第三步之前的任何时候都没有阻塞。当我试图从核心数据中提取项目时,我什么也得不到。请注意,这是我第一次使用子/父结构,因此我不确定我是否完全正确。您正在获取一个Date属性,但插入新值的代码没有设置该属性?这只是伪代码,我已经处理过了。问题
NSManagedObjectContext
结构在单独的线程中执行一些核心数据操作。操作及其代码的顺序如下:
1)删除核心数据中的所有条目(使用父/子结构)
2)向核心数据插入新条目(使用父/子结构)
一切的顺序如上所述。现在一切似乎都很好,主线程在第三步之前的任何时候都没有阻塞。当我试图从核心数据中提取项目时,我什么也得不到。请注意,这是我第一次使用子/父结构,因此我不确定我是否完全正确。您正在获取一个
Date
属性,但插入新值的代码没有设置该属性?这只是伪代码,我已经处理过了。问题还在于其他方面。您确定要在保存核心数据后获取数据吗?只需通过注释“fetchRequest.resultType=NSDictionaryResultType”进行尝试即可;您获取的是Date
属性,但插入新值的代码没有设置该属性?这只是伪代码,我已经处理过了。问题在于其他方面。您确定要在保存核心数据后尝试获取数据吗?请通过注释“fetchRequest.resultType=NSDictionaryResultType;”进行尝试
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObjectContext *bgContext = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];
bgContext.parentContext = context;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityDescription inManagedObjectContext:context];
[fetchRequest setEntity:entity];
[bgContext performBlockAndWait:^{
NSError *error;
NSArray *items = [bgContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *managedObject in items) {
[bgContext deleteObject:managedObject];
[bgContext save:nil];
}
NSLog(@"%@ object deleted",entityDescription);
}];
[context performBlockAndWait:^{
[context save:nil];
}];
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObjectContext *bgContext = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];
bgContext.parentContext = context;
[bgContext performBlockAndWait:^{
for (int i = 0; i<quantityCol.count; i++)
{
NSManagedObject *Sales = [NSEntityDescription insertNewObjectForEntityForName:@"Transactions" inManagedObjectContext:bgContext];
NSString *product = [productTitleCol objectAtIndex:i];
NSString *city = [cityTitleCol objectAtIndex:i];
NSString *customer = [customerTitleCol objectAtIndex:i];
[Sales setValue:product forKey:@"product"];
[Sales setValue:city forKey:@"city"];
[Sales setValue:customer forKey:@"customer"];
NSError *err;
[bgContext save:&err];
if (err) {
NSLog(@"%@",err);
}
[self.managedObjectContext performBlock:^{
[self.managedObjectContext save:nil];
}];
}
}];
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Transactions"];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Transactions" inManagedObjectContext:self.managedObjectContext];
fetchRequest.resultType = NSDictionaryResultType;
fetchRequest.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"Date"]];
fetchRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"Date" ascending:NO]];
fetchRequest.returnsDistinctResults = YES;
distinctDate = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];