删除具有重复键名 parse.com 的对象
Delete objects with repeated keyname parse.com
我在 parse.com 上有一个 class,其中包含许多对象。每个对象的键之一是国家名称。如何以编程方式删除具有重复国家名称键的所有对象。我能想到的唯一方法是非常冗长,所以任何想法都将不胜感激。
这是我能想到的最好的。
var objectId = [String]()
var Country = [String]()
var city = [String]()
var deletes = [String]()
var query = PFQuery(className: "Route")
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
for object in objects {
objectId.append(object.objectId)
Country.append(object["Country"] as String)
city.append(object["Start"] as String)
}
println(objectId)
println(Country)
var i = Int()
for i=0; i < objectId.count; i++ {
var j = Int()
for j = i + 1 ; j < objectId.count; j++ {
if Country[i] == Country[j] {
println(objectId[j])
var deleteQuery = PFQuery(className: "Route")
deleteQuery.getObjectInBackgroundWithId(objectId[j], block: { (object: PFObject!, error2: NSError!) -> Void in
if error2 == nil {
object.delete()
}
})
}
}
}
}
我相信一定有更简单的方法。
您的做法是正确的,请记住将限制从默认的 100 更改为 1000。
如果您需要在超过 1000 行的 table/class 上执行此操作,则需要创建一个服务器端作业来执行此操作并使用 query.each()
函数进行迭代所有行,然后清理重复项。
我认为您可以通过创建 NSMutableSet
个国家/地区名称来使重复搜索更简洁一些。 运行 通过返回的对象将国家名称添加到集合中,testing membership 预先。如果对象的国家/地区已经在集合中,请将其添加到 duplicates
.
的可变数组中
您的代码的删除部分可以大大改进。在基于集合的测试填充重复数组后,使用 PFObject(deleteAllInBackground:duplicates)
这将替换所有从 for i=0; i < objectId.count; i++ {
开始的代码
我在 parse.com 上有一个 class,其中包含许多对象。每个对象的键之一是国家名称。如何以编程方式删除具有重复国家名称键的所有对象。我能想到的唯一方法是非常冗长,所以任何想法都将不胜感激。
这是我能想到的最好的。
var objectId = [String]()
var Country = [String]()
var city = [String]()
var deletes = [String]()
var query = PFQuery(className: "Route")
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
for object in objects {
objectId.append(object.objectId)
Country.append(object["Country"] as String)
city.append(object["Start"] as String)
}
println(objectId)
println(Country)
var i = Int()
for i=0; i < objectId.count; i++ {
var j = Int()
for j = i + 1 ; j < objectId.count; j++ {
if Country[i] == Country[j] {
println(objectId[j])
var deleteQuery = PFQuery(className: "Route")
deleteQuery.getObjectInBackgroundWithId(objectId[j], block: { (object: PFObject!, error2: NSError!) -> Void in
if error2 == nil {
object.delete()
}
})
}
}
}
}
我相信一定有更简单的方法。
您的做法是正确的,请记住将限制从默认的 100 更改为 1000。
如果您需要在超过 1000 行的 table/class 上执行此操作,则需要创建一个服务器端作业来执行此操作并使用 query.each()
函数进行迭代所有行,然后清理重复项。
我认为您可以通过创建 NSMutableSet
个国家/地区名称来使重复搜索更简洁一些。 运行 通过返回的对象将国家名称添加到集合中,testing membership 预先。如果对象的国家/地区已经在集合中,请将其添加到 duplicates
.
您的代码的删除部分可以大大改进。在基于集合的测试填充重复数组后,使用 PFObject(deleteAllInBackground:duplicates)
这将替换所有从 for i=0; i < objectId.count; i++ {