解析whereKey:equalTo:不工作

时间:2015-11-16 14:23:58

标签: arrays swift parse-platform pfquery pfobject

我的查询应该搜索一个解析类并返回所有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()
    }
}
}

this is what the parse class looks like

1 个答案:

答案 0 :(得分:1)

如果您要检查Parse Server上的数组是否包含某些内容,那么最好使用containsIn谓词。 像这样: query.whereKey("tags", containedIn: ["rock"]), 这将为您提供包含至少1个"rock"实例的所有结果。您可以将containedIn视为or谓词,其中只有一个项目必须匹配。而containsAllObjectsInArray的功能更像是and