在我的表格 View 中,我从这些数组中获取显示的数据:
var offersProduct = [String]()
var offersPrice = [String]()
var savings = [String]()
var shops = [String]()
var imageNames = [String]()
var exDates = [Int]()
var pickedIDs = [String]()
var setDates = [Int]()
目前数据未以任何方式排序。所以我有 2 个问题。
- 如何根据日期对数组进行排序?最接近 NSDate 的优先。
我有 exDates 数组,女巫是 timeIntervalSince1970 的 Int 数组。所以我想要最近的到期日期来获取数组的索引 0。
- 如何像第一个数组一样对其他数组进行排序?
假设我已经对 exDates 数组进行了排序,这给我带来了另一个问题,因为现在显示的到期日期与其他数组中的数据不匹配。因此,我需要通过将数据从与 exDates 数组中相同的索引移入,以某种方式对其他数组进行排序。怎么办?
希望有人能帮忙。
最佳答案
您的问题是您在应该使用单个/统一实体的地方使用单独的实体。要实现您正在尝试的目标,您应该切换到使用包含所有关联数据的 class
或 struct
。
如果您继续使用当前采用的方法,您肯定会遇到任意错误并执行枯燥的操作来同步所有阵列中的数据。因此,从本质上讲,使用多个数组而不是一个专门对象数组是一种不好的做法。
考虑重构你的数组:
struct Entity {
var offerProduct : String
var offerPrice : String
var savings : String
var shop : String
var imageName : String
var exDate : Int
var pickedID : String
var setDate : Int
}
var entities = [Entity]()
然后要对单个实体数组(一旦填满)进行排序,您只需设置必要的条件,例如:
entities = entities.sorted(by: {$0.exDate > $1.exDate })
关于arrays - Swift - 排序数组类似于另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47450528/