Как получить максимальные и минимальные значения из набора значений, которые содержат двойное и целое число в swift 3? - PullRequest
0 голосов
/ 07 июня 2018

Здесь мне нужно получить максимальные и минимальные значения из набора чисел, в котором он содержит двойные и целые числа, и здесь я попробовал приведенный ниже код, но он показывает ошибку, и ошибка Cannot invoke 'max' with an argument list of type '([Any?])' Может кто-нибудь помочь мне, как решить эту проблему?

Вот мой код

   var facetsModel = [ListFacets]()

   for (key, value) in (dict as? [String:Any])! {
      print(key)
      print(value)
      var dict = [String:Any]()
      dict.updateValue(key , forKey: "price")
      dict.updateValue(value , forKey: "quantity")
      self.facetsModel.append(ListFacets.init(dict: dict))
    }
    let maxNum = max(self.facetsModel.map{$0.key})
    print(maxNum)

Вот мой класс модели

struct ListFacets {

    let key : Any?
    let value : Int?

    init(dict:[String:Any]) {
        if let price = dict["price"] as? Double {
            self.key = price
        }else {
           self.key =  dict["price"]
        }
        self.value = dict["quantity"] as? Int
    }

}

здесь приведены данные по dict

{0 =1;"2,1" = 2;21 = 3;«31,5» = 2;"9,45" = 1;}

1 Ответ

0 голосов
/ 07 июня 2018

Не совсем понятно, что вы пытаетесь сделать, но это гораздо более чистый способ настройки вашей структуры и определения максимальной цены:

struct ListFacets {

    let quantity : Int
    let price : Double
}

var facetsModel = [ListFacets]()

let dict = ["0": 1, "2.1":2, "21":3, "31.5": 2, "9.45":1]

for (priceStr, quantity) in dict {
    if let price = Double(priceStr) {
        facetsModel.append(ListFacets(quantity: quantity, price: price))
    }
}


if let maxNum = facetsModel.max( by: { (a, b) -> Bool in
    return a.price < b.price
    }) {
        print(maxNum)
}
...