尝试执行两个 Parse PFQueries 但出现错误 - SWIFT
Trying to do two Parse PFQueries but getting error - in SWIFT
我目前正在同时执行两个 PFQueries,一个是 PFUser.query
,另一个是标准对象查询。它们都试图大致同时执行。在代码运行之前,我没有收到任何错误:
'Cannot do a comparison query for type: Swift._NSSwiftArrayImpl'
我只能假设这是因为我试图同时执行两个不同的查询?
有人可以进一步了解它的含义以及如何克服它吗?
我用于这两个查询的代码是:
var query = PFQuery(className: "Traits")
query.whereKey("name", equalTo: self.names)
var waveUsers = query.findObjects()
if waveUsers != nil {
self.profile.waves.removeAll(keepCapacity: true)
for waveUser in waveUsers{
self.profile.waves.append(waveUser["waves"] as Int)
}
}
和 PFUser 查询:
var query = PFUser.query()
query.whereKey("location", nearGeoPoint:geopoint)
query.limit = 20
var users = query.findObjects()
if users != nil {
self.profile.names.removeAll(keepCapacity: true)
self.profile.images.removeAll(keepCapacity: true)
self.profile.genders.removeAll(keepCapacity: true)
self.profile.locations.removeAll(keepCapacity: true)
self.profile.status.removeAll(keepCapacity: true)
self.profile.rStatus.removeAll(keepCapacity: true)
self.profile.age.removeAll(keepCapacity: true)
for user in users {
{
self.profile.names.append(user["name"] as Int)
self.profile.images.append(user["image"] as NSData)
self.profile.genders.append(user["gender"] as NSString)
self.profile.locations.append(user["location"] as PFGeoPoint)
self.profile.rStatus.append(user["relationship"] as NSString)
self.profile.age.append(user["age"] as NSInteger)
self.profile.status.append(user["status"] as NSString)
self.appsTableView.reloadData()
user.save()
}
}
提前致谢
如果您想测试 "name" 列是否可以在您的 self.names
数组中找到,请使用 containsAllObjectsInArray:
equalTo
对单个对象进行操作(它可以测试单个对象是否存在于数组类型列中,但您正在尝试相反的方法)。
EDIT - 假设您有一个字符串数组,您想要查找其字符串列可在该数组中找到的对象...
// find people in the People class who were SNL cast members
var array = ["belushi", "akroyd", "radner"];
var queries = [];
// assume underscorejs
_.each(array, function(name) {
var query = new Parse.Query("People");
query.equalTo("lastName", name);
queries.push(query.find());
});
Parse.Query.or(queries).then(function() {
var snlCastMembers = _.toArray(arguments);
});
我目前正在同时执行两个 PFQueries,一个是 PFUser.query
,另一个是标准对象查询。它们都试图大致同时执行。在代码运行之前,我没有收到任何错误:
'Cannot do a comparison query for type: Swift._NSSwiftArrayImpl'
我只能假设这是因为我试图同时执行两个不同的查询?
有人可以进一步了解它的含义以及如何克服它吗?
我用于这两个查询的代码是:
var query = PFQuery(className: "Traits")
query.whereKey("name", equalTo: self.names)
var waveUsers = query.findObjects()
if waveUsers != nil {
self.profile.waves.removeAll(keepCapacity: true)
for waveUser in waveUsers{
self.profile.waves.append(waveUser["waves"] as Int)
}
}
和 PFUser 查询:
var query = PFUser.query()
query.whereKey("location", nearGeoPoint:geopoint)
query.limit = 20
var users = query.findObjects()
if users != nil {
self.profile.names.removeAll(keepCapacity: true)
self.profile.images.removeAll(keepCapacity: true)
self.profile.genders.removeAll(keepCapacity: true)
self.profile.locations.removeAll(keepCapacity: true)
self.profile.status.removeAll(keepCapacity: true)
self.profile.rStatus.removeAll(keepCapacity: true)
self.profile.age.removeAll(keepCapacity: true)
for user in users {
{
self.profile.names.append(user["name"] as Int)
self.profile.images.append(user["image"] as NSData)
self.profile.genders.append(user["gender"] as NSString)
self.profile.locations.append(user["location"] as PFGeoPoint)
self.profile.rStatus.append(user["relationship"] as NSString)
self.profile.age.append(user["age"] as NSInteger)
self.profile.status.append(user["status"] as NSString)
self.appsTableView.reloadData()
user.save()
}
}
提前致谢
如果您想测试 "name" 列是否可以在您的 self.names
数组中找到,请使用 containsAllObjectsInArray:
equalTo
对单个对象进行操作(它可以测试单个对象是否存在于数组类型列中,但您正在尝试相反的方法)。
EDIT - 假设您有一个字符串数组,您想要查找其字符串列可在该数组中找到的对象...
// find people in the People class who were SNL cast members
var array = ["belushi", "akroyd", "radner"];
var queries = [];
// assume underscorejs
_.each(array, function(name) {
var query = new Parse.Query("People");
query.equalTo("lastName", name);
queries.push(query.find());
});
Parse.Query.or(queries).then(function() {
var snlCastMembers = _.toArray(arguments);
});