我使用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
你有任何帮助吗?
谢谢。
答案 0 :(得分:0)
NSAssert([res performFetch:&error], @"Fetch failed") ;
这段代码错了。
我在发布模式下设置其他C / C ++标志“-DNS_BLOCKS_ASSERTIONS = 1”。此标志用于删除NSAssert行。 因此,performFetch不是exec。
谢谢你。