2015-11-16 1 views
0

Мой запрос должен искать класс parse и возвращать все PFObjects, если они содержат строку в массиве тегов. Без whereKey: equalTo: код работает, и все объекты появляются, но с ним ничего не показывает.Parse 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

Если вы собираетесь проверять, если массив на вашем сервере Разбор содержит что-то, то это было бы лучше использовать предикат containedIn. Нравится это: query.whereKey("tags", containedIn: ["rock"]), , который даст вам все результаты, содержащие как минимум 1 экземпляр "rock". Вы можете думать о containedIn как предикат or, где должно соответствовать только одно из элементов массива. В то время как containsAllObjectsInArray функции больше похожи на and.

+0

Я все еще ничего не получаю, когда использую 'containsIn'. – Michi314

+0

заменяет ваш equalTo на query.whereKey ("tags", containsIn: ["rock"]) дает все равно ничего не дает? Weird. Я буду продолжать смотреть. – MQLN

+0

Да, это действительно странно. спасибо – Michi314

Смежные вопросы