0

我使用 coredata 开发了一个应用程序。

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

看下面的代码。

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 mode ,就像这样。生产 > 架构 > 编辑方案 > 运行 > 构建配置。

环境:Xcode 4.6.3,基础 SDK iOS 6.1

你有什么帮助吗?

谢谢你。

4

1 回答 1

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

这段代码是错误的。

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

谢谢你。

于 2013-08-12T12:44:04.297 回答