코어 데이터에 데이터를 원격으로로드하는 ipad 앱이 있습니다. 라벨에 상태 업데이트를 지속적으로 표시했지만 메시지가 UILabel로 전송되기 전에 내 메소드의 모든 것이 완료되어야합니다.ipad 앱에서 실시간 정보를 사용자에게 표시 하시겠습니까?
어떻게이 문제를 해결할 수 있습니까?
샘플 코드 : importStatus 위의 코드에서
-(void) importCollections {
/* code left out for brevity */
for (int j=0; j <[[myCollections objectAtIndex:i] count]; j++)
{
Collection *entity = (Collection*) [NSEntityDescription insertNewObjectForEntityForName:@"Collection" inManagedObjectContext:managedObjectContext];
[entity setCollectionName:[[[myCollections objectAtIndex:i] objectAtIndex:j] valueForKey:@"CollectionName"]];
[entity setCollectionID:[[[myCollections objectAtIndex:i] objectAtIndex:j] valueForKey:@"CollectionID"]];
[entity setManufacturer:[manufacturers objectAtIndex:i]];
NSError *error;
if (![managedObjectContext save:&error]) {
// Handle the error.
NSLog(@"%@",error);
}
importStatus.text =[NSString stringWithFormat:@"importing collection: %@", entity.CollectionName];
}
}
내가 지속적으로 업데이트 할 필요가있는 UILabel의, 그러나이 방법의 모든이 완료 될 때까지 기다려야 할 것 같다.
은 의미가 있습니다. 따라서 백그라운드 스레드에서 가져 오는 모든 작업을 중단하고 메인 스레드의 UILabel에 메시지를 보내고 사용자에게 계속 정보를 제공 할 수 있습니다. 올바르게 이해하고 있습니까? – Slee
@Max Fraser : 정확합니다. 2 밀리 초보다 오래 걸리는 모든 작업은 백그라운드 스레드에서 수행해야합니다. 쓰레드 통신은 실행 루프 아키텍처와 performSelectorOnThread ... NSObject의 API 덕분에 Cocoa에서 쉽습니다. –