핵심 데이터에서 큰 데이터를 가져 오는 데 사용하는 핵심 데이터 배경 컨텍스트가 있습니다. 데이터를 가져 오는 동안 UIActivityIndicatorView를 표시하려고합니다.UIActivityIndicatorView 핵심 데이터 백그라운드 컨텍스트 가져 오기
내 문제는 가져 오기 프로세스를 시작하기 전에 UIActivityIndicatorView를 시작하고 가져 오기 프로세스가 끝난 후 중지하면 내선 표시기가 화면에 나타나지 않는다는 것입니다. 그래서 활동 표시기에 표시 할 충분한 시간이 있는지 확인하기 위해 백그라운드 블록 안에 sleep (10)을 포함 시켰습니다. 표시되지 않습니다.
"xcode"의 "Debug View Hierarchy"를보고 활동 표시기가로드되고 있다는 것을 알고 있는데, 활동 표시기가 맨 위에있는 뷰 계층 구조에 있음을 보여줍니다.
이것은 핵심 데이터 백그라운드 컨텍스트 프로세스에서 사용할 때만 발생합니다. 다른 모든 시나리오에서는 예상대로 활동 표시기가 표시됩니다.
.PrivateQueueConcurrencyType
나는 행운과 함께 다음과 같은 시도 :LoadingOverlay.shared.showOverlayWithMessage(self.view, message: "Loading ...")
let backContext = CDStack.shared.backgroundContext
backContext.performBlockAndWait {() -> Void in
print("Fetching parts started ...")
sleep(10)
print("Fetching done!")
}
LoadingOverlay.shared.hideOverlayView()
배경 컨텍스트 concurrencyType와 NSPersistentStoreCoordinator이있는 부모 컨텍스트를 사용하여 여기에
내가 사용하고 코드입니다.dispatch_sync(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.rawValue), 0)) {() -> Void in
let backContext = CDStack.shared.backgroundContext
backContext.performBlockAndWait {() -> Void in
dispatch_async(dispatch_get_main_queue()) {() -> Void in
LoadingOverlay.shared.showOverlayWithMessage(self.view, message: "Loading ...")
}
print("Fetching parts started ...")
sleep(10)
print("Fetching done!")
dispatch_async(dispatch_get_main_queue()) {() -> Void in
LoadingOverlay.shared.hideOverlayView()
}
}
}
또는 다음
dispatch_async(dispatch_get_main_queue()) {() -> Void in
LoadingOverlay.shared.showOverlayWithMessage(self.view, message: "Loading ...")
}
dispatch_sync(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.rawValue), 0)) {() -> Void in
let backContext = CDStack.shared.backgroundContext
backContext.performBlockAndWait {() -> Void in
print("Fetching parts started ...")
sleep(10)
print("Fetching done!")
}
}
dispatch_async(dispatch_get_main_queue()) {() -> Void in
LoadingOverlay.shared.hideOverlayView()
}
핵심 데이터 배경 상황에 맞는 활동을 함께 사용할 때 ActivityIndicatorView가 표시되지 않는 이유를 이해하지 않습니다. 도움?
(10) '백그라운드 코드 내에서 코드가 백그라운드에서 실행되는 동안 활동 표시기가 바로 사라지는 지 확인하기 위해 지연합니다. 코드가 실행되는 동안 10 초 내에 XCode의 "Debug View Hierarchy"를 클릭하여 계층 구조에 어떤 뷰가 있는지 확인하고 백그라운드 코드가 실행되기 전에 활동 뷰가 닫히지 않도록합니다. 지금 당장 귀하의 제안을 시도했지만 여전히 동일한 효과가 있습니다. 내 문제는 배경 코드 바로 전에 활동보기가 해제되지 않습니다. – tew
아, 다른 답변이 없다면 내일 아침에 다른 모양을 보게 될 것입니다. :) –