私は現在、Facebookから派生した特定のイベントを持つ人々のリストを表示するUITableViewを持っています。現在、コアデータのフェッチと挿入に問題はありませんが、テーブルビューの更新にかかる時間はおそらく約 12 秒です
ユーザーは最初にイベントを選択します
そして編集画面に入る
イベントの種類をアニバーサリー(風船)に変更
私は家に帰るのと同じようにナビゲートしますが、ここに問題があります.私のテーブルビューはおそらく12秒後に記念日タイプのイベントに更新されます.なぜテーブルビューの更新にそんなに遅れがあるのですか
cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"EventCell";
//testing
EventCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
PersonEvent *currentEvent = [self.eventsArray objectAtIndex:indexPath.row];
[cell configureForEvent:currentEvent];
// NSLog(@"Event date is %@",[currentEvent.eventDate description]);
// NSLog(@"Time interval %f",[currentEvent timeDifference]);
//[self configureCell:cell atIndexPath:indexPath];
return cell;
}
configureForEvent
-(void)configureForEvent:(PersonEvent*)theEvent
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
//performing async operation her
dispatch_sync(dispatch_get_main_queue(), ^{
personLabel.text = theEvent.name;
dateLabel.text = [theEvent getFriendlyDate];
// NSInteger theAge = [theEvent getAge];
if (theEvent.hasAge) {
// NSLog(@"Have to load the age as well for %@",theEvent.name);
ageLabel.text = [NSString stringWithFormat:@"%d yrs",[theEvent getAge] ];
}
else{
ageLabel.text = @"";
}
//ageLabel.text = [NSString stringWithFormat:@"%d yrs",[theEvent getAge] ];
reminderImage.image = [theEvent.theReminders count] == 0?[UIImage imageNamed:@"reminder.png"]:nil;
// Have to configure event type image based on the event type..
//NSLog(@"Event image %@",[eventTypeImagesArray objectAtIndex:theEvent.eventType]);
eventTypeImage.image = [UIImage imageNamed:[eventTypeImagesArray objectAtIndex:theEvent.eventType]];;
// Update UI
// Example:
// self.myLabel.text = result;
});
});
}
initWithNibName で呼び出される loadAllEventz メソッド
-(void)loadAllEventz
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"PersonEvent" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"eventDate" ascending:YES];
[fetchRequest setSortDescriptors:@[sortDescriptor]];
NSError *error;
allEventsArray = [appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];
NSLog(@"%@",allEventsArray);
// [appDelegate.managedObjectContext executeFetchRequestAsynchronously:fetchRequest delegate:self];
}
PersonEvent クラスは NSManagedObject サブクラスです