CoreData不会获取任何行

时间:2010-07-30 15:52:31

标签: iphone objective-c core-data

我有一个非常基本的CoreData支持的iPhone应用程序。在我强制应用程序生成sqlite文件后,我接受了它并预先填充了一条记录,以测试将其加载到tableview中。

但是,我遇到了麻烦,因为CoreData似乎没有找到表格中的那一行。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{
     return [fetchedResultsController sections] count];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{    
    id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo numberOfObjects];
}

第一个函数总是返回一个,第二个函数总是返回零。由于tableview认为没有行,因此它永远不会访问cellForRowAtIndexPath,因此我的数据都没有被加载。

但是,我可以使用以下代码在viewDidLoad中查看我的表结构:

if(!managedObjectContext){
    managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Assessment" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
for (NSPropertyDescription *property in entity)
{
    NSLog(@"%@", property.name);
}
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
[request release];

现在,让我感到震惊的是,我的其余代码中没有任何内容生成NSFetchRequest,因为我从未遇到过cellForRowAtIndex。但是我也在Recipe示例中使用了大部分代码,看起来它以相同的方式加载(并且实际上有效)。

我确信我错过了一些明显的东西,有人能指出我正确的方向吗?

代码可以在整个here中找到。

1 个答案:

答案 0 :(得分:2)

问题几乎可以肯定是在获取结果控制器的设置中,例如错误的实体,错误的谓词等。