관심 지점 목록이 있습니다. 이 포인트는 영역 데이터베이스에서로드되었습니다. 각 지점은 사용자 위치까지의 거리를 표시해야합니다.렐름의 오브젝트 목록에 오류가 있습니다 : 잘못된 스레드에서 액세스 한 영역
새로운 위치를 얻을 때마다 모든 포인트까지의 거리를 계산합니다. 고정 된 화면을 피하기 위해, 주 스레드의 테이블에 목록을 표시 한 후에 백그라운드 스레드에서 수학을 수행했습니다. 나는이 오류가 얻을 그러나
func updatedLocation(currentLocation: CLLocation) {
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
for point in self.points{
let stringDistance = self.distanceToPoint(currentLocation, destination: point.coordinate)
point.stringDistance = stringDistance
}
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.tableView?.reloadData()
})
})
}
:
libc++abi.dylib: terminating with uncaught exception of type realm::IncorrectThreadException: Realm accessed from incorrect thread.
나는 그러나, 나는 백그라운드 스레드에서 영역 개체에 액세스하고 있습니다 때문에이 오류가 무엇입니까 알을, 그들은 이미 배열에로드 있습니다 그리고 나는 데이터베이스에 새로운 쿼리를 결코 만들지 않는다.. 또한, var 내가 데이터베이스에 저장하지 않은 그의 업데이 트됩니다.
어떻게 해결할 수 있을까요? 주 스레드에서 수학하는 것을 피하고 싶었습니다. 사전
감사합니다. 나는 두 번째 접근법을 선택할 것이라고 생각한다. 이후 데이터베이스에 stringDistance를 저장하지 않아도되므로 항상 영역에 쓰는 것이 더 낫습니다. 감사 – DaSilva