试图在Swift 3中对NSMutableDictionary进行排序,Swift 2中的代码不再适用于我(各种错误)。
我试图使用以下代码根据字典的值对字典进行排序,这些值是浮动的:
var sortedDict = unsortedDict.allValues.sorted({ $0 < $1 }).flatMap({ floatedlotterydictionary[$0] })基本上,我想要这本未分类的字典..。
{
a = "1.7";
b = "0.08";
c = "1.4";
}...to变成了这个分类字典..。
{
b = "0.08";
c = "1.4";
a = "1.7";
}但是,使用上述代码行将返回$0 < $1部件的错误“参数类型anyobject不符合$0 < $1类型”。那么,如何根据Swift 3中的值对词典进行排序呢?
(注意:这一行代码部分来自this answer。)
我在Xcode 8 beta 1中使用Swift 3。
发布于 2016-07-16 14:59:09
好的。普通字典上可用的集合方法仍然可用,但是对象的类型不强制,这会添加不安全的继承。
在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测试版(8S128d)。
发布于 2016-09-18 16:10:15
也有这样的方法:
let k = ["a" : 1.7, "b" : 0.08, "c" : 1.4]
print(k.flatMap({$0}).sort { $0.0.1 < $0.1.1 })https://stackoverflow.com/questions/38412116
复制相似问题