我有这段代码用于向我的Parse数据库查询一些事件,Swift 1.2:
let keywordsArray = searchTxt.text.componentsSeparatedByString(" ") as [String]
// keywordsArray is an array made by separate words of a searchBar
// Make Parse query
eventsArray.removeAllObjects()
var query = PFQuery(className: "Events")
query.whereKey("keywords", containedIn: keywordsArray as [AnyObject])
query.findObjectsInBackgroundWithBlock { (objects, error)-> Void in
我确定Parse数据库中的关键字字段包含 keywordsArray 的每个字词,但结果始终为负数,该查询无法找到任何内容。 我用 println()仔细检查了数组中的单词,它们包含在我的Parse数据库中的 keywords 字段中,全部是小写字符串,因为我的搜索是searchBar中的文本是完全小写的。
那么这可能是一个Parse bug吗?我正在使用最新的Parse SDK。 我错过了那个查询中的内容吗?
谢谢!
修改
感谢您的回复,我会更好地解释。 完成处理程序中的对象填充一个名为eventsArray的NSMutableArray,它在调用查询之前由 .removeAllObjects 正确初始化。 控制台日志没有错误,也没有元素给阵列,所以没有对象,这是一个例子:
- Parse数据库中的关键字字段,Events类,包含一个句子,其中存在“棒球”和“事件”字样(全部为小写字样)。
-keywordsArray是由searchTxt中的2个单词创建的,实际上是棒球和事件,所以控制台日志实际上给了我:
[棒球,活动]
是 keywordsArray 的项目。
所以我不明白为什么 eventsArray 在以下代码中显示的 for 循环后为空:
let keywordsArray = searchTxt.text.componentsSeparatedByString(" ") as [String]
println("\(keywordsArray)") // <- prints = [baseball, event]
// Make a new Parse query
eventsArray.removeAllObjects()
var query = PFQuery(className: "Events")
query.whereKey("keywords", containedIn: keywordsArray as [AnyObject])
// query.whereKey(EVENTS_KEYWORDS, containsString: searchTxt.text!.lowercaseString) // <- this is try I made but it doesn't work either so I've commented it out
query.findObjectsInBackgroundWithBlock { (objects, error)-> Void in
if error == nil {
if let objects = objects as? [PFObject] {
for object in objects {
self.eventsArray.addObject(object)
} }
println("\(self.eventsArray)") // <- This array comes up empty and no error by Parse on the Console log...