解析本地数据存储:在Swift中,取消固定对象似乎已损坏



我想取消固定之前成功本地存储的对象列表,并将其替换为新对象。下面的代码应该可以做到这一点,但本地固定的对象根本不会得到更新。我尝试了包括PFObject.unpin在内的所有东西,除了完全重置模拟器之外,没有任何东西可以删除旧的固定对象

func updateCountryList(server:Int, local:Int) {
    let query = VEPCountry.queryAll()
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if error != nil {
            // throw error
        } else {
            if local != 0 {
                VEPState.unpinAllObjectsWithName(String("countryListVersion(local)"))
            }
            VEPState.pinAll(objects, withName: String("countryListVersion(server)"))
            defaults.setObject(server, forKey: "localCountryListVersion")
        }
    }
}

感谢有关Swift 中取消绑定的已知问题的帮助或指针

我想知道你的unpin是否还没有真正完成,它毕竟要去数据库了。

你能试试吗:

query
  .findObjectsInBackground()
  .continueWithSuccessBlock({ (task: BFTask!) -> AnyObject! in
    // ...
    return VEPState.unpinAllObjectsWithNameInBackground("name"))
  })
  .continueWithSuccessBlock({ (task: BFTask!) -> AnyObject! in
    // ...
    return VEPState.pinAllInBackground(objects, withName: "name"))
  })

我可能语法有点偏离,背景方法名称也不太正确。此外,我使用承诺/任务,这不是一个坏习惯。

最新更新