【问题标题】:How to remove duplicate data in the UIPickerView in Swift如何在 Swift 中删除 UIPickerView 中的重复数据
【发布时间】:2015-04-13 10:15:14
【问题描述】:

我可以知道如何删除所有数据从 Parse 数据库传递的重复数据。我只需选择一列并将该列数据传递给此选择器视图。 我尝试找到query.wherekey,但它没有类似SQL语句的DISTINCT函数,如何避免数据重复?

【问题讨论】:

    标签: swift parse-platform ios8 xcode6 uipickerview


    【解决方案1】:

    当您将项目一一添加到 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]
    

    【讨论】:

    • 哦,谢谢@HoaParis,它确实帮助我删除了重复的数据。谢谢。但是我想再问一个问题,我在 Parse 中传递了列中的数据,但是为什么数据只是部分在选择器视图中?
    • 你知道选择器视图只是从该列传递部分数据而不是获取全部数据有什么问题吗?
    【解决方案2】:

    我认为您在 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)
    [...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 2021-11-29
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      相关资源
      最近更新 更多