2016-12-27 4 views
0

私はアプリを持っており、ユーザーはpdfファイルをダウンロードできます。私は最近4をalamofireに移動して3迅速な私は、ダウンロードが完了した後、PDFファイルを表示しようとするが、ここに私のコードです、それはRealm accessed from incorrect thread.ダウンロードが完了した後、不正なスレッドからアクセスされた領域Swift 3

を投げる:

Alamofire.download(url, method: .get, encoding: JSONEncoding.default, to: destination) 
     .downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in 

      DispatchQueue.main.async { 
       magazineObject.progressBarDownload = self.percentProgress 
       magazineObject.progressBarTitle = self.percentProgressNext.cleanValue 

       } 
      } 
     } 
     .validate { request, response, temporaryURL, destinationURL in 
      self.localPath = destinationURL 
      magazineObject.pathDatabase = String(describing: self.localPath!) 
      magazineObject.progressBarDownload = Double(self.percentProgressFinal) 
      magazineObject.progressBarTitle = Float(self.displayFinalLabelPercent).cleanValue 
      magazineObject.statusDarkViewAfterRelaunch = 1 
      magazineObject.statusDownload = self.statusDatabase 

      try! realm.write { 
       realm.add(magazineObject) 
      } 
      return .success 
    } 

答えて

1

validateブロック内の他のレルムのスレッドオブジェクトを作成してみ

.validate { request, response, temporaryURL, destinationURL in 
    self.localPath = destinationURL 
    magazineObject.pathDatabase = String(describing: self.localPath!) 
    magazineObject.progressBarDownload = Double(self.percentProgressFinal) 
    magazineObject.progressBarTitle = Float(self.displayFinalLabelPercent).cleanValue 
    magazineObject.statusDarkViewAfterRelaunch = 1 
    magazineObject.statusDownload = self.statusDatabase 

    // create new object here 
    let realm = try! Realm() 

    try! realm.write { 
     realm.add(magazineObject) 
    } 
    return .success 
} 

あなたはそれが機能するレルムドキュメントhttps://realm.io/docs/swift/latest/#using-a-realm-across-threads

+0

で詳細を確認することができます!まことにありがとうございます! –

関連する問題