【发布时间】:2015-11-08 22:38:03
【问题描述】:
我遇到了一些缓存策略问题,它没有从缓存中获取对象。这是我调用来获取我的对象的函数:
func findEmployeeForLoggedInUser(completion: (array: [AnyObject], error: String?) -> Void) {
if PFUser.currentUser() != nil {
let query = PFQuery(className: "Employee")
query.cachePolicy = PFCachePolicy.cacheElseNetwork
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 的缓存策略声明为cacheElseNetwork。但是,当我尝试通过调用此函数来检索我的对象时,它并不能完全工作,因为它没有检索数据。我还禁用了 Parse 本地数据存储。此外,每次用户重新登录时,我都会清除所有缓存的结果。
我该如何解决这个问题?
【问题讨论】:
-
在从网络中提取数据然后在本地固定数据的查询之前,您是否执行过查询?
-
你说它没有检索任何数据。如果禁用缓存怎么办?那么您的查询是否检索到任何数据?如果
employerId是引用或指针类型,那么您通常只会说whereKey("employerId", equalTo:PFUser.currentUser()!)
标签: ios swift caching parse-platform