2016-07-04 92 views
0

我使用的是字典的键作为我的tableviewdatasource。字典的类型是[String: [Question]]Swift Dictionary排序的键扩展

问题是从Dictionary.keys返回的数组不是一个排序数组,但我希望它被排序。创建一个函数来对keys数组进行排序可能是一个解决方案,但对我来说这还不够好,因为每次访问密钥时都必须调用该函数。

一个想法出来了我的矿是,使词典,像这样的延伸,

extension Dictionary where Key: StringLiteralConvertible { 
    var sortedKeys: [String] { 
     get { 
      return keys.sort{ $0.0 > $1.0 } 
     } 
    } 
} 

但它告诉我,“类型的表达式是没有更多的背景下暧昧”。谁能告诉我这是否可能?

回答

2
extension Dictionary where Key: Comparable { 
    var sortedKeys: [Key] { 
     get { 
      return keys.sort{ $0 > $1 } 
     } 
    } 
} 
  • 要使用>Key需要为Comparable。 (这个顺序是你想要什么?你用<按升序排列。)

  • 这种扩展适用于Dictionary其中Key可能不String

  • keys.sort$0$1是类型Key,不(Key, Value)的。

+0

感谢兄弟!这工作 –