【问题标题】:How to use Parse Cache Policy如何使用解析缓存策略
【发布时间】:2015-10-05 11:51:18
【问题描述】:

我尝试使用 Parse 实现缓存策略。这是我从 Parse 查询数据的地方,也是我使用缓存策略的地方:

func findEmployeeForLoggedInUser(completion: (array: [AnyObject], error: String?) -> Void) {
    if PFUser.currentUser() != nil {
        let query = PFQuery(className: "Employee")
        query.cachePolicy = PFCachePolicy.CacheElseNetwork //CACHE POLICY
        query.whereKey("employerId", equalTo: PFUser.currentUser()!.objectId!)
        query.findObjectsInBackgroundWithBlock { (results, error) -> Void in
            var employeeArray = [PFEmployee]()
            if let error = error {
                let errorString = error.userInfo?["error"] as? String
                completion(array: employeeArray, error: errorString)
            } else {
                for employee in results! {
                    let currentEmployee: PFEmployee = employee as! PFEmployee
                    employeeArray.append(currentEmployee)
                }
                completion(array: employeeArray, error: nil)
            }
        }
    }
}

另外,每次用户登录或注册时,我都使用这行代码:PFQuery.clearAllCachedResults() 来清除所有缓存的结果。

当我尝试运行应用程序时,它崩溃了,这是调试区域中的错误消息:

2015-07-16 14:53:38.644 Employee Keeper[73678:5099293] [错误]:最终无法运行命令并出现错误:错误域 = 解析代码 = 209“无效会话令牌”用户信息 = 0x7fe150712ef0 {代码 = 209, originalError=Error Domain=NSURLErrorDomain Code=-1011 "操作无法完成。(NSURLErrorDomain error -1011.)",temporary=0, error=invalid session token, NSLocalizedDescription=invalid session token} 2015-07-16 14:54:01.172 Employee Keeper[73678:5098808] *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“启用固定时不允许使用方法。”

libc++abi.dylib:以 NSException 类型的未捕获异常终止

我做错了什么?

【问题讨论】:

    标签: ios swift caching parse-platform


    【解决方案1】:

    正如您日志的最后一行所写:

    "Method not allowed when Pinning is enabled."
    

    如果您查看official Parse documentation for PFQuery,更具体地说是cachePolicy 属性,那么它是这样写的:

    The cache policy to use for requests.
    Not allowed when Pinning is enabled.
    

    不幸的是,目前无法将固定功能和缓存功能混为一谈。


    如果您不使用本地数据存储功能,那么我建议您直接禁用此功能并使用缓存功能。

    如果您依赖本地数据存储功能,那么我建议您使用本地数据存储实现某种自己的缓存功能。

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 2015-07-22
      • 1970-01-01
      • 2010-11-21
      • 2010-10-06
      • 1970-01-01
      • 2012-09-05
      • 2020-08-03
      • 2011-11-12
      相关资源
      最近更新 更多