如何使用解析缓存策略

时间:2015-07-16 06:59:37

标签: ios swift caching parse-platform

我尝试使用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员工守护者[73678:5099293] [错误]:最终错误地运行命令:错误域=解析代码= 209"会话令牌无效" UserInfo = 0x7fe150712ef0 {code = 209,originalError = Error Domain = NSURLErrorDomain Code = -1011"无法完成操作。 (NSURLErrorDomain错误-1011。)",temporary = 0,错误=无效的会话令牌,NSLocalizedDescription =无效的会话令牌} 2015-07-16 14:54:01.172员工守护者[73678:5098808] ***由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'启用固定时不允许使用方法。 #39;

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

我做错了什么?

1 个答案:

答案 0 :(得分: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.

所以不幸的是,它目前无法混淆固定功能和缓存功能。

如果您没有使用本地数据存储区功能,那么我建议您只需禁用此功能并使用缓存功能。

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