0

CoreData在我的 iOS 应用程序中使用。当我杀死我的应用程序并重新启动它时,我有一个方法可以计算所有表中的记录总数。但它没有执行,我得到的信号是 program signal received "SIGTERM"

-(int)getAllCount{
         NSLog(@"start");

         int returnCount=0;

         NSMutableArray *tempArr=[[NSMutableArray alloc]initWithObjects:@"TempFirstAid",@"TempArticles",@"TempSymptom",@"TempIndexMaster",@"TempIndexSubMaster",@"TempIndexDetails", nil];

    for (int i=0; i<[tempArr count]; i++) {

         NSEntityDescription *entityDesc = [NSEntityDescription entityForName:[tempArr 
         objectAtIndex:i] inManagedObjectContext:[appDelegate managedObjectContext]];

         NSFetchRequest *request2 = [[NSFetchRequest alloc] init];

        [request2 setEntity:entityDesc];

        NSError *error;

        NSArray *objects = [[appDelegate managedObjectContext] executeFetchRequest:request2 
        error:&error];

        returnCount=returnCount+[objects count];
    }

我在 View Did Load 中调用此方法

4

1 回答 1

0

你应该使用:

- (NSUInteger)countForFetchRequest:(NSFetchRequest *)request error:(NSError **)error

而不是获取所有对象只是为了获得计数。我猜您缺少部分代码,因为缺少返回。另一件事:您似乎是从主线程调用它。这可能会导致您的应用程序冻结并在一段时间内无响应(在大型数据库上)。

根据您对问题的描述,考虑到它实际上并没有执行这一事实,这种方法似乎甚至不是问题。

于 2012-08-17T14:23:17.967 回答