【问题标题】:Realm with GCD using使用 GCD 的领域
【发布时间】:2016-08-25 09:00:26
【问题描述】:

我在客户端-服务器应用程序中工作。我正在发送请求,在得到响应后转到后台线程解析数据,在所有数据解析后,我将转到主线程。在领域事务中写入的所有数据都存在于后台线程中,但在主线程中它是空的。这是我的代码的一部分: 一开始我有 20 个对象

    Alamofire.request(.GET, urlRequest).responseJSON(completionHandler: { response in
        guard let dictionary = response.result.value as? [String : AnyObject]
            else {
                completion(response: false)
                return
        }
        if dictionary["status"] != nil {
            completion(response: false)
        }
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
            print("\(NSDate()) start parse feeds with offset")
            self.parseArticle(dictionary, data: [])
            print("\(NSDate()) finish parse feeds with offset")
            UserSession.feedsLoaded = true
            //here I have 40 objects
            dispatch_async(dispatch_get_main_queue(), {
                //here I have again 20 objects, which I had at start
                completion(response: true)
            })
        })
    })


    func parseArticle(dictionary : [String : AnyObject], data : [String]) {
    var startData = data
    var endData : [String] = []
    let realm = try! Realm()
    let _ = try? realm.write() {here is the code of my parser}}

后台线程提交的数据在主线程的realm中没有出现的问题,如何处理?

【问题讨论】:

  • 问题是什么?请更新您的帖子
  • 问题是,数据在哪里添加到领域?

标签: database multithreading realm grand-central-dispatch


【解决方案1】:

Seeing Changes from Other Threads 上查看 Realm 的文档。

如果autorefreshtrue,您需要调用Realm.refresh() 或等待下一次runloop 迭代,以查看主线程中的更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    相关资源
    最近更新 更多