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

Posted

技术标签:

【中文标题】解析本地数据存储:取消固定对象似乎在 Swift 中被破坏【英文标题】:Parse Local Datastore: Unpin objects seems broken in Swift 【发布时间】:2015-04-12 22:27:01 【问题描述】:

我想取消固定我之前在本地成功存储的对象列表,并将其替换为新对象。下面的代码应该可以做到这一点,但是本地固定的对象根本不会得到更新。我尝试了所有方法,包括 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 中取消固定的已知问题的帮助或指针

【问题讨论】:

你用的是什么版本? 解析 ios SDK 1.6.2 -> 如果我没记错的话是最新的 为什么 unpin 和 pin 方法的 pin 名称不同? 我为下一组使用了一个新的 pin 名称,因此下一轮新 pin 是用于取消固定的旧 pin。不应该有所作为。我也尝试了同名,问题并没有消失 和你一样的问题。取消固定不起作用。我尝试使用实例方法和静态方法。它没有任何改变。当我查询本地存储时,我的对象仍然存在......任何解决方案? 【参考方案1】:

我想知道您的 unpin 是否还没有真正完成,毕竟它正在进入数据库。

你可以试试:

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

我的语法可能有点不对劲,后台方法的名称也不太对。此外,我正在使用承诺/任务,这不是一个坏习惯。

【讨论】:

以上是关于解析本地数据存储:取消固定对象似乎在 Swift 中被破坏的主要内容,如果未能解决你的问题,请参考以下文章

解析本地数据存储不显示固定数据

Swift Parse - 本地数据存储并在表格视图中显示对象

解析 JSON 文件(本地存储),从而快速创建对象数组

解析本地数据存储不一致

在 Parse SDK Android 中使用未保存的 id null 固定对象查询本地数据存储

解析本地数据存储不起作用 - Swift 2