使用重复的keyname parse.com删除对象

时间:2015-01-08 20:58:51

标签: ios xcode swift parse-platform pfquery

我在parse.com上有一个包含许多对象的类。每个对象的关键之一是国家的名称。如何使用重复的国家/地区名称以编程方式删除所有对象。我能想到的唯一方法是非常长的,所以任何想法都会非常感激。

这是我能想到的最好的。

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()
                            }
                        })

                    }
                }
            }
        }

我确信必须有一种更简单的方法。

2 个答案:

答案 0 :(得分:1)

您完成此操作的方式是正确的,只需记住将限制从默认值100更改为1000.

如果您需要在超过1000行的表/类上执行此操作,那么您需要创建一个服务器端作业来执行此操作并使用query.each()函数迭代所有行,然后清理重复项。

答案 1 :(得分:1)

我认为您可以通过创建NSMutableSet国家/地区名称来使重复搜索更加轻松。运行返回的对象,事先将国家/地区名称添加到集testing membership。如果某个对象的国家/地区已经在该集合中,请将其添加到duplicates的可变数组中。

您的代码的删除部分可以大大改进。在基于集合的测试填充重复数组之后,使用PFObject(deleteAllInBackground:duplicates)这将替换从for i=0; i < objectId.count; i++ {

开始的所有代码