Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 删除具有重复keyname parse.com的对象_Ios_Xcode_Swift_Parse Platform_Pfquery - Fatal编程技术网

Ios 删除具有重复keyname parse.com的对象

Ios 删除具有重复keyname parse.com的对象,ios,xcode,swift,parse-platform,pfquery,Ios,Xcode,Swift,Parse Platform,Pfquery,我在parse.com上有一个类,它包含许多对象。每个对象的一个键是国家的名称。如何使用重复的国家/地区名称键以编程方式删除所有对象。我能想到的唯一办法是冗长乏味,因此任何想法都将不胜感激 这是我能想到的最好的了 var objectId = [String]() var Country = [String]() var city = [String]() var deletes = [String]() var query = P

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

                    }
                }
            }
        }
var objectId=[String]()
var Country=[String]()
var city=[String]()
var deletes=[String]()
var query=PFQuery(类名:“路由”)
query.findobjectsinbackgroundithblock{(对象:[AnyObject]!,错误:NSError!)->中的Void
对于对象中的对象{
objectId.append(object.objectId)
Country.append(对象[“Country”]作为字符串)
追加(对象[“开始”]作为字符串)
}
println(objectId)
println(国家)
var i=Int()
对于i=0;i中的Void
如果error2==nil{
object.delete()
}
})
}
}
}
}

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

您这样做是正确的,只需记住将限制从默认值100更改为1000即可


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

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


代码的删除部分可以大大改进。基于集合的测试填充重复项数组后,使用
PFObject(deleteAllInBackground:duplicates)
这将替换i=0时从
开始的所有代码;i

谢谢你的回复,不幸的是,我最近才开始开发,只熟悉swift和[PFObject deleteAllInBackground:duplicates];看起来很像objective-C?我也不完全确定在哪里实现它。谢谢你的进一步帮助哇。谢谢,这是一个非常有用的函数