【发布时间】:2015-04-13 10:15:14
【问题描述】:
我可以知道如何删除所有数据从 Parse 数据库传递的重复数据。我只需选择一列并将该列数据传递给此选择器视图。
我尝试找到query.wherekey,但它没有类似SQL语句的DISTINCT函数,如何避免数据重复?
【问题讨论】:
标签: swift parse-platform ios8 xcode6 uipickerview
我可以知道如何删除所有数据从 Parse 数据库传递的重复数据。我只需选择一列并将该列数据传递给此选择器视图。
我尝试找到query.wherekey,但它没有类似SQL语句的DISTINCT函数,如何避免数据重复?
【问题讨论】:
标签: swift parse-platform ios8 xcode6 uipickerview
当您将项目一一添加到 self.pickerString 数组中时,只需在将新值添加到数组之前验证此数组是否包含新值。例如:
if !self.pickerString.contains(object["Intake"] as! String) {
self.pickerString.append(object["Intake"] as! String)
}
没有内置函数可以快速删除数组中的重复项(如果我错了,请纠正我)。但是,您可以使用 'extension' 关键字为数组添加新功能:
extension Array {
func distinct<T: Equatable>() -> [T] {
var newArray = [T]()
for item in self {
if !contains(newArray, item as! T) {
newArray.append(item as! T)
}
}
return newArray
}
}
用法:
let s = ["344","333","1","2","333"]
var p = s.distinct() as [String]
【讨论】:
我认为您在 Parse 上没有任何类似 distinct,您必须下载所有行,然后过滤掉相等的值。
对于函数式方法:
func distinct<T: Equatable>(source: [T]) -> [T] {
var unique = [T]()
for item in source {
if !contains(unique, item) {
unique.append(item)
}
}
return unique
}
[...]
self.pickerString = distinct(objects)
[...]
【讨论】: