2016-03-19 7 views
0

Farklı bir iş parçacığı üzerinde sıralama yapmaya çalışıyorum ancak Realm accessed from incorrect thread almaya devam ediyorum. Şimdiye kadar denediğim şey aşağıda.Yanlış iş parçacığı erişilen erişim - gönderim async

 let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
     dispatch_async(dispatch_get_global_queue(priority, 0)) { 
      // do some task 
      self.organizationArray = GetOrganization.sortOrganizationsByDistanceFromLocation(realm.objects(Organization), location: self.lastLocation!) 
      dispatch_async(dispatch_get_main_queue()) { 
       self.lastLoadedPage = self.lastLoadedPage + 1 

       if numberOfResults < self.limit { 
        //Hide FooterView 
        self.moreDataAvailable = false 
        self.hideTableViewFooter() 

       } 
      } 
     } 
+0

bir 'Bölge atılır. Uygulamanızın neresinde olduğunu belirlemek için Xcode'ta [Objective-C istisnaları] (http://blog.manbolo.com/2012/01/23/xcode-tips-1-break-on-exceptions) üzerinde bir kesme noktası ekleyebilirsiniz. oluyor. Yayınladığınız kod snippet'inde bu sorunla ilgili belirgin bir sorun yoktur, bu nedenle sorun uygulamanızın başka bir yerinde bulunmalıdır ya da yayından kaldırdığınız bazı kodlarda bulunmalıdır. – bdash

cevap

0

Gösterilen kod parçacığını ana iş parçacığından, ör. Bir görünüm denetleyicisinden göründüğü gibi, başka bir iş parçacığındaki ana iş parçacığından bir RLMRealm örneğini kullanmanız olasıdır. Diyar nesnelerinin biri, üzerinde oluşturulduğu dışında bir diş erişildiğinde yanlış thread` dışında erişilen

let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
     dispatch_async(dispatch_get_global_queue(priority, 0)) { 
      // Get a Realm for the current thread 
      RLMRealm *realm = [RLMRealm defaultRealm]; 

      // do some task with that instance instead 
      self.organizationArray = GetOrganization.sortOrganizationsByDistanceFromLocation(realm.objects(Organization), location: self.lastLocation!) 
      // …