【问题标题】:Delete objects with repeated keyname parse.com删除具有重复键名的对象 parse.com
【发布时间】:2015-01-08 20:58:51
【问题描述】:

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

                    }
                }
            }
        }

我相信一定有更简单的方法。

【问题讨论】:

    标签: ios xcode swift parse-platform pfquery


    【解决方案1】:

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

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

    【讨论】:

    • 感谢回复,可惜我最近才开始开发,只熟悉swift,和[PFObject deleteAllInBackground:duplicates];看起来很像objective-C?我也不完全确定我会在哪里实现这一点。感谢您的进一步帮助
    • 哇。谢谢,这是一个非常有用的功能
    【解决方案2】:

    你做的方法是对的,只要记住将限制从默认的 100 更改为 1000。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 2020-10-17
      • 2018-09-06
      相关资源
      最近更新 更多