Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. modelA.name = "abc"
  2. modelB.name = "efg"
  3. modelC.name = "hij"
  4. modelD.name = "abc"
  5. modelE.name = "efg"
  6.  
  7. struct Model {
  8. var name: String?
  9. }
  10.  
  11. let allModelsArray = [Model(name: "abc"), Model(name: "efg"), Model(name: "hij"), Model(name: "abc"), Model(name: "efg"), Model(name: "efg"), Model(name: "hij")]
  12.  
  13. let abcModelsArray = allModelsArray.filter { $0.name == "abc" }
  14. // [Model(name: Optional("abc")), Model(name: Optional("abc"))]
  15.  
  16. let hijModelsArray = allModelsArray.filter { $0.name == "hij" }
  17. // [Model(name: Optional("hij")), Model(name: Optional("hij"))]
  18.  
  19. struct Model {
  20. var type : String
  21. var name : String
  22. }
  23. var modelA = Model(type: "A", name: "abc")
  24. var modelB = Model(type: "B", name: "efg")
  25. var modelC = Model(type: "C", name: "abc")
  26. var modelD = Model(type: "D", name: "efg")
  27.  
  28. let models = [modelA,modelB,modelC,modelD]
  29.  
  30. let names = Set(models.map({return $0.name}))
  31.  
  32. var groupedModels : [String:[Model]] = [:]
  33. for var name in names {
  34. let elements = models.filter({$0.name == name})
  35. groupedModels[name] = elements
  36. }
  37.  
  38. let a = [modelA, modelB, modelC, modelD, modelE]
  39.  
  40. let arr = a.reduce([:]) { (result, currentModel) -> [String: [Model]] in
  41. var mutableDic = result
  42. if ((mutableDic[currentModel.name]) != nil) {
  43. mutableDic[currentModel.name]?.append(currentModel)
  44. } else {
  45. mutableDic[currentModel.name] = [currentModel]
  46. }
  47.  
  48. return mutableDic
  49. }
  50.  
  51. var mutableDic = [String : [Model]]()
  52.  
  53. for aModel in a {
  54. if ((mutableDic[aModel.name]) != nil) {
  55. mutableDic[aModel.name]?.append(aModel)
  56. } else {
  57. mutableDic[aModel.name] = [aModel]
  58. }
  59. }
  60.  
  61. var d[String: [Model]]
  62. for i in array {
  63. if d[i.name] == nil { // Don't repeat if already found
  64. let m = array.filter { $0.name == i.name }
  65. if m.count > 1 {
  66. d[i.name] = m
  67. }
  68. }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement