Ios SQLLite查询有结果,但从方法返回时,它会丢失数据

Ios SQLLite查询有结果,但从方法返回时,它会丢失数据,ios,ios6,nsmanagedobjectcontext,Ios,Ios6,Nsmanagedobjectcontext,我有一个多线程应用程序,可以在服务器和ios设备之间同步数据 同步发生在一个单独的线程上。我对NSManagedObjectContext使用单例模式,它是在主线程上创建的。我开始有线程问题,经过研究,我发现上下文不应该在已经初始化的线程之外使用。所以我在主线程的上下文中调用init,并在同步线程中使用它。为了解决这个问题,我做了以下几点 我创建了一个全局方法,该方法返回NSPersistentStoreCoordinator,在同步线程上,我使用该协调器来创建新上下文。这消除了线程问题,但现在

我有一个多线程应用程序,可以在服务器和ios设备之间同步数据

同步发生在一个单独的线程上。我对NSManagedObjectContext使用单例模式,它是在主线程上创建的。我开始有线程问题,经过研究,我发现上下文不应该在已经初始化的线程之外使用。所以我在主线程的上下文中调用init,并在同步线程中使用它。为了解决这个问题,我做了以下几点

我创建了一个全局方法,该方法返回NSPersistentStoreCoordinator,在同步线程上,我使用该协调器来创建新上下文。这消除了线程问题,但现在我得到了一些其他奇怪的行为

在我的同步线程中,我调用executeFetchRequest方法,并将结果数组返回给其他方法。当我调试时,我看到有93条记录,所有记录都充满了数据。然后,我检查返回方法上的数组,但即使我仍然得到93条记录,这些列都有nil值

这是密码

+(NSArray *) GetAllRowsInTable:(NSString *) tableName
{
    NSManagedObjectContext *context = [[NSManagedObjectContext alloc]    initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    [context setPersistentStoreCoordinator:[Globals GetPersistentStoreCoordinator]];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:[NSEntityDescription entityForName:tableName inManagedObjectContext:context]];
    NSError *error;
    NSArray *results = [context executeFetchRequest:request error:&error];

    return results;
}

有人知道为什么会这样吗?

我想我知道为什么会这样。在阅读了NSManagedObject之后,我得出了以下结论。调用ExecuteFetchRequest时,将返回一个错误结果数组,这意味着除非对NSManagedObject调用valueForKey方法,否则不会从持久性存储中检索其值。因为我在方法中创建了上下文,并将结果返回给其他一些方法,而创建结果的上下文并不存在,所以我没有得到任何结果。所有故障最终都会失败。

您能在创建和执行提取请求的地方发布代码吗?是否设置了错误对象?如果是,错误是什么?没有错误,但是调用GetAllRowsInTable方法的方法将结果列检索为nil。