3

以下の方法を使用して、コアからデータを取得しています。アプリがフリーズする

      NSArray *fetchResult = [self.managedObjectContext executeFetchRequest:request error:&error];

動作することもあれば、エラー メッセージやクラッシュなしでフリーズすることもあります。デバッガーを一時停止すると、上記のコード行で停止します! スレッドもブロックも使用していません。

-(NSArray *)getSubContent
{
NSEntityDescription *desc;
NSPredicate *predicate;
NSSortDescriptor *sortDescriptor;
switch ([tableSelector selectedSegmentIndex])
{
    case 0: //fav list 
        desc = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:self.managedObjectContext];
        predicate = [NSPredicate predicateWithFormat:@"isFavorite = %@",[NSNumber numberWithBool:YES]];
        sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
        break;
    case 1:  //Rassayel list
        desc = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:self.managedObjectContext];
        sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];

        predicate = [NSPredicate predicateWithFormat:@"isApp = %@",[NSNumber numberWithBool:YES]];
        break;
    case 2: //group list
        desc = [NSEntityDescription entityForName:@"Group" inManagedObjectContext:self.managedObjectContext];
        predicate = nil;
        sortDescriptor = nil;
        break;


    default:
        break;
}

NSFetchRequest *request = [[NSFetchRequest alloc] init] ;
[request setEntity:desc];
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[request setPredicate:predicate];

NSError *error = nil;
NSArray *fetchResult = [self.managedObjectContext executeFetchRequest:request error:&error];
if ( error )
    NSLog(@"%@",error);
return fetchResult;

}



クラッシュログ

例外の種類: 00000020 例外コード: 0x8badf00d 強調表示されたスレッド: 0

アプリケーション固有の情報: com.takarub.rasayl が時間内に起動できませんでした

経過した合計 CPU 時間 (秒): 1.620 (ユーザー 1.620、システム 0.000)、3% CPU 経過したアプリケーション CPU 時間 (秒): 0.432、1% CPU

スレッド 0 名: ディスパッチ キュー: com.apple.main-thread

スレッド 0:

0 libsystem_kernel.dylib 0x32b800d8 __psynch_mutexwait + 24

1 libsystem_c.dylib 0x34eaa674 pthread_mutex_lock + 376

2 CoreData 0x327dbd52 -[_PFLock ロック] + 18

3 CoreData 0x327eb1f2 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 806

4 CoreData 0x327e9c22 -[NSManagedObjectContext executeFetchRequest:エラー:] + 598

5 RassayelV1.0 0x000193ec -[ContactsViewController getSubContent] (ContactsViewController.m:225)

4

0 に答える 0