将不同的 google 个地点归为一类

Group different google places categories into one

我创建了这个函数

static func getCategories() -> [QCategoryy] {
        let list:[QCategoryy] = [QCategoryy(name: "bar", image: UIImage(named: "food box.png")!), QCategoryy(name :"night_club", image: UIImage(named: "accessories box.png")!), QCategoryy(name: "gym", image: UIImage(named: "jewellery box.png")!), QCategoryy(name: "spa", image: UIImage(named: "beauty box.png")!), QCategoryy(name: "museum", image: UIImage(named: "history box.png")!)]
        return list
    }

从 google 个地方 API、https://developers.google.com/places/supported_types 获取不同类别的列表,但我想做的是将更多类别分组为一个类别,例如

let list:[QCategoryy] = [QCategoryy(name: "bar, restaurant, cafè", image: UIImage(named: "food box.png")!)

我该怎么做?我的意思是我必须如何编写它才能使其工作?

您可以制作一个辅助函数来简化该代码。像这样:

  struct Category {
    let name: String
    let image: UIImage?
  }

  func categories(named names: [String], image: UIImage? = UIImage(named: "image")) -> [Category] {
    return names.map() { name in
      return Category(name: name, image: image)
    }
  }

然后你可以这样称呼它:

let list = categories(named: ["a","b","c"]) //Uses default image value specified in the function declaration
let secondList = categories(named: ["a","b","c"], image: UIImage(named: "food box.png"))

显然,您可以使用所需的 QCategory 类型,而不是使用该 Category 结构。

如果图像不是 QCategory 的可选 属性,您可能需要使该参数成为 categories(_:,_:) 所必需的,或者在函数体中防止它出现。