我的查询应该搜索一个解析类并返回所有PFObject,如果它们包含tags数组中的字符串。如果没有whereKey: equalTo:
,代码就会起作用,所有对象都显示出来,但没有任何显示。
import Foundation
class WallPost: PFObject, PFSubclassing {
@NSManaged var post: String
@NSManaged var user: PFUser
@NSManaged var tags: [String]
init(post: String, user: PFUser, tags: [String]) {
super.init()
self.post = post
self.user = user
self.tags = tags
}
override init() {
super.init()
}
override class func query() -> PFQuery?{
let query = PFQuery(className: parseClassName())
query.includeKey("user")
query.whereKey("tags", equalTo: "rock")
query.orderByDescending("createdAt")
return query
}
class func parseClassName() -> String {
return "POST"
}
override class func initialize(){
var onceToken: dispatch_once_t = 0
dispatch_once(&onceToken) {
self.registerSubclass()
}
}
}
答案 0 :(得分:1)
如果您要检查Parse Server上的数组是否包含某些内容,那么最好使用containsIn谓词。
像这样:
query.whereKey("tags", containedIn: ["rock"])
,
这将为您提供包含至少1个"rock"
实例的所有结果。您可以将containedIn
视为or
谓词,其中只有一个项目必须匹配。而containsAllObjectsInArray
的功能更像是and
。