加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Swift 3中排序字典

发布时间:2020-12-14 05:39:01 所属栏目:百科 来源:网络整理
导读:试图在 Swift 3中对NSMutableDictionary进行排序,来自Swift 2的代码不再适用于我(各种错误). 我试图使用以下代码按其值(浮点数)对我的字典进行排序: var sortedDict = unsortedDict.allValues.sorted({ $0 $1 }).flatMap({ floatedlotterydictionary[$0] })
试图在 Swift 3中对NSMutableDictionary进行排序,来自Swift 2的代码不再适用于我(各种错误).

我试图使用以下代码按其值(浮点数)对我的字典进行排序:

var sortedDict = unsortedDict.allValues.sorted({ $0 < $1 }).flatMap({ floatedlotterydictionary[$0] })

基本上,我想要这个未排序的字典……

{
a = "1.7";
b = "0.08";
c = "1.4";
}

…变成这个排序的字典……

{
b = "0.08";
c = "1.4";
a = "1.7";
}

但是使用上面那行代码返回错误“参数类型anyobject不符合类型NSCopying”为$0< 1美元.那么如何根据Swift 3中的值对字典进行排序? (注意:该行代码部分来自this answer.)

我在Xcode 8 beta 1中使用Swift 3.

好.普通字典上可用的收集方法仍然可用,但是不强制执行对象类型,这会不安全地添加继承.

在docs中,sorted采用了一个闭包,它允许我们同时访问键和值,并将其视为一个元素,从而对字典进行排序.

let k: NSMutableDictionary = ["a" : 1.7,"b" : 0.08,"c" : 1.4]
print(k.sorted(isOrderedBefore: { (a,b) in (a.value as! Double) < (b.value as! Double) }))

转换是必需的,因为a.value和b.value的类型是AnyObject.这适用于我的计算机,运行Xcode版本8.0 beta(8S128d).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读