0

CoreDataiOSアプリで使用しています。アプリケーションを強制終了して再起動すると、すべてのテーブルのレコードの総数をカウントするメソッドがあります。しかし、それは実行されておらず、私は次のような信号を受け取りました 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];
    }

ViewDidLoadでこのメソッドを呼び出しています

4

1 に答える 1

0

次のものを使用する必要があります。

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

カウントを取得するためだけにすべてのオブジェクトを取得する代わりに。リターンが欠落しているため、コードの一部が欠落していると思います。もう1つ、メインスレッドからこれを呼び出しているようです。これにより、アプリがフリーズし、しばらくの間応答しなくなる可能性があります(大規模なデータベースの場合)。

問題の説明からすると、実際には実行されていないことを考えると、このメソッドは問題ではないようです。

于 2012-08-17T14:23:17.967 に答える