PFQueryTableView queryForTable(),怎么return什么都没有?
PFQueryTableView queryForTable(), how to return nothing?
我刚开始使用 Parse,有时会遇到一些问题。我有一个 PFQueryTableView,当用户登录时,它工作得很好。queryForTable() 函数查询在其 "createdBy" 列中具有当前用户用户名的所有对象。但是,如果没有用户登录,那我 return 怎么办?目前我有这样的东西,它有效,但在日志中给出了一个错误。用户登录后,你必须拉动刷新Table,然后它会显示用户事件。当没有用户登录时,我想有一个空的 table,并且在用户登录并且 loginView 消失后,table 应该自动加载用户数据。这是我的 viewDidAppear 和我的 queryForTable 函数:
override func viewDidAppear(animated: Bool) {
if PFUser.currentUser() == nil {
let loginView = PFLogInViewController()
loginView.delegate = self
self.presentViewController(loginView, animated: true, completion: nil)
}
}
override func queryForTable() -> PFQuery {
if PFUser.currentUser() != nil{
let query = PFQuery(className: "calendarEvents")
query.cachePolicy = .CacheElseNetwork
query.orderByAscending("StartDate")
query.whereKey("createdBy", equalTo: (PFUser.currentUser()?.username)!)
return query
}else{
let noQuery = PFQuery()
return noQuery
}
}
您选择的方法很好。一种更常见的方法是在应用程序有用户之前甚至不显示此 VC。您还可以将所有用户添加到某个角色,然后使用引用该角色的 CLP 保护您的 "calendarEvents" class。
查询的另一个想法是添加一个保证空结果的限定符,例如...
override func queryForTable() -> PFQuery {
let query = PFQuery(className: "calendarEvents")
query.cachePolicy = .CacheElseNetwork
query.orderByAscending("StartDate")
query.whereKey("createdBy", equalTo: (PFUser.currentUser()?.username)!)
if PFUser.currentUser() == nil {
query.whereKey("createdAt", greaterThan: NSDate.distantFuture()) // return objects created after the universe has collapsed
}
return query
}
我刚开始使用 Parse,有时会遇到一些问题。我有一个 PFQueryTableView,当用户登录时,它工作得很好。queryForTable() 函数查询在其 "createdBy" 列中具有当前用户用户名的所有对象。但是,如果没有用户登录,那我 return 怎么办?目前我有这样的东西,它有效,但在日志中给出了一个错误。用户登录后,你必须拉动刷新Table,然后它会显示用户事件。当没有用户登录时,我想有一个空的 table,并且在用户登录并且 loginView 消失后,table 应该自动加载用户数据。这是我的 viewDidAppear 和我的 queryForTable 函数:
override func viewDidAppear(animated: Bool) {
if PFUser.currentUser() == nil {
let loginView = PFLogInViewController()
loginView.delegate = self
self.presentViewController(loginView, animated: true, completion: nil)
}
}
override func queryForTable() -> PFQuery {
if PFUser.currentUser() != nil{
let query = PFQuery(className: "calendarEvents")
query.cachePolicy = .CacheElseNetwork
query.orderByAscending("StartDate")
query.whereKey("createdBy", equalTo: (PFUser.currentUser()?.username)!)
return query
}else{
let noQuery = PFQuery()
return noQuery
}
}
您选择的方法很好。一种更常见的方法是在应用程序有用户之前甚至不显示此 VC。您还可以将所有用户添加到某个角色,然后使用引用该角色的 CLP 保护您的 "calendarEvents" class。
查询的另一个想法是添加一个保证空结果的限定符,例如...
override func queryForTable() -> PFQuery {
let query = PFQuery(className: "calendarEvents")
query.cachePolicy = .CacheElseNetwork
query.orderByAscending("StartDate")
query.whereKey("createdBy", equalTo: (PFUser.currentUser()?.username)!)
if PFUser.currentUser() == nil {
query.whereKey("createdAt", greaterThan: NSDate.distantFuture()) // return objects created after the universe has collapsed
}
return query
}