NSFetchedResultsController无法在发布模式下工作

时间:2013-08-11 03:19:36

标签: iphone ios objective-c nsfetchedresultscontroller

我使用coredata开发应用程序。

但是,在AdHoc或Release模式下,无法从coredata获取数据(使用NSFetchedResultsController)。 在调试模式下,可以获取数据。

查看以下代码。

NSFetchRequest *req = [[NSFetchRequest alloc] initWithEntityName:MODEL_NAME] ;
[req setFetchBatchSize:20] ;
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"orderIndex" ascending:YES];
[req setSortDescriptors:[[NSArray alloc] initWithObjects:sortDescriptor, nil]] ;
NSFetchedResultsController *res = [[NSFetchedResultsController alloc] initWithFetchRequest:req managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:nil] ;
NSAssert([res performFetch:nil], @"Fetch failed") ;
int dataCounter = [[[res sections] objectAtIndex:0] numberOfObjects] ;
// In Release mode:0, in Debug mode:2
NSLog(@"dataCounter:%d",dataCounter) ;

我改变了Release或Debug模式,就像这样。 产生>架构>编辑方案>运行>构建配置。

环境:Xcode 4.6.3,基础SDK iOS 6.1

你有任何帮助吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

NSAssert([res performFetch:&error], @"Fetch failed") ;

这段代码错了。

我在发布模式下设置其他C / C ++标志“-DNS_BLOCKS_ASSERTIONS = 1”。此标志用于删除NSAssert行。 因此,performFetch不是exec。

谢谢你。