在Swift 2中对字典数组进行排序

平板狗

我已经阅读了很多关于SO的文章,但仍然感到困惑!我有一系列的字典,请参见下文:

var myArray = [[String:AnyObject]]()

myArray.append([
    "caseNumber" : "12349",
    "formType" : "Advanced",
    "caseStatus" : "Approved",
    "caseDetails" : "blah blah",
    "caseLUD" : NSDate(),
    "friendlyName" : "name1"
    ])

myArray.append([
    "caseNumber" : "12345",
    "formType" : "Standard",
    "caseStatus" : "On-Hold",
    "caseDetails" : "blah blah",
    "caseLUD" : NSDate(),
    "friendlyName" : "name2"
    ])

myArray.append([
    "caseNumber" : "12342",
    "formType" : "Normal",
    "caseStatus" : "Rejected",
    "caseDetails" : "blah blah",
    "caseLUD" : NSDate(),
    "friendlyName" : "name3"
    ])

这些数据将进入tableView,并且我希望用户能够按(caseNumber或我的)caseLUD(日期)决定排序顺序但是我不知道如何通过值对数组重新排序。有什么想法吗?所有帮助表示赞赏。

瓦瓦瓦玛

排序依据caseNumber

myArray.sortInPlace { ($0["caseNumber"] as! String) < ($1["caseNumber"] as! String) }

注意,这里采用caseNumberString这可能会导致意想不到的结果(例如"12345" < "2")。您可能想要存储caseNumberInt,或Int在排序时将其转换为

myArray.sortInPlace { Int($0["caseNumber"] as! String) < Int($1["caseNumber"] as! String) }

排序依据caseLUD

myArray.sortInPlace { ($0["caseLUD"] as! NSDate).compare($1["caseLUD"] as! NSDate) == .OrderedAscending}

.OrderedAscending先给您最早的日期,.OrderedDescending再给您最新的日期。


如果将数据存储在Struct而不是中Dictionary,则可以避免混乱的类型转换。

struct CaseRecord {
    var caseNumber: Int
    var formType: String
    var caseStatus: String
    var caseDetails: String
    var caseLUD: NSDate
    var friendlyName: String
}

var myArray = [CaseRecord]()

myArray.append(CaseRecord(
    caseNumber : 12345,
    formType : "Advanced",
    caseStatus : "Approved",
    caseDetails : "blah blah",
    caseLUD : NSDate(),
    friendlyName : "name1"
    )
)

myArray.append(CaseRecord(
    caseNumber : 124,
    formType : "Standard",
    caseStatus : "On-Hold",
    caseDetails : "blah blah",
    caseLUD : NSDate(),
    friendlyName : "name2"
    )
)

myArray.append(CaseRecord(
    caseNumber : 13,
    formType : "Normal",
    caseStatus : "Rejected",
    caseDetails : "blah blah",
    caseLUD : NSDate(),
    friendlyName : "name3"
    )
)

myArray.sortInPlace { $0.caseNumber < $1.caseNumber }

myArray.sortInPlace { $0.caseLUD.compare($1.caseLUD) == .OrderedDescending }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift中对字典数组进行排序

来自分类Dev

按键值对字典的Swift数组进行排序

来自分类Dev

如何按键对Swift字典数组进行排序

来自分类Dev

Swift如何通过键值对数组字典进行排序

来自分类Dev

使用日期 Swift 3 对字典数组进行排序

来自分类Dev

按某个键值对字典数组进行排序(Swift 3)

来自分类Dev

在Swift 5.1中,基于日期类型的字典值对字典数组进行排序,而又不知道键。

来自分类Dev

在Swift中对字典排序

来自分类Dev

swift2:从字典中获取按值排序的键数组

来自分类Dev

如何在Swift中对字典键进行排序?

来自分类Dev

根据数组之一的字母顺序在Swift中对2个数组进行排序

来自分类Dev

Swift中字符串字典的排序数组

来自分类Dev

Swift:数组中的字典

来自分类Dev

Swift中的字典数组

来自分类Dev

字典数组中的Swift字典

来自分类Dev

Swift 3中的字典排序

来自分类Dev

无法对Swift数组进行排序

来自分类Dev

SWIFT 2-按日期对多维数组进行排序

来自分类Dev

如何按属性类型对Swift中的数组进行自动排序?

来自分类Dev

如何在Swift中对数组进行排序?

来自分类Dev

在 Swift 中对 Int 的二维数组进行排序

来自分类Dev

Swift中字典中的数组

来自分类Dev

Swift中字典中的数组

来自分类Dev

从数组Swift生成按字母排序的字典

来自分类Dev

Swift字典的Swift数组

来自分类Dev

Swift字典的Swift数组

来自分类Dev

在Swift中从数组创建字典

来自分类Dev

在Swift中修改字典数组

来自分类Dev

在Swift中创建“字典”的“数组”