Я ищу «еду» в моем районе, и возвращаемое значение — это куча ресторанов с их названием. Как бы я случайно выбрал только одно из них и вернул имя в свой textLabel
? Прямо сейчас он возвращает все названия ресторанов в моем textLabel
.
request.region = map.region
request.naturalLanguageQuery = "food"
let search = MKLocalSearch(request: request)
search.start(completionHandler: {(response, error) in
if error != nil {
print("Error occured in search: \(error!.localizedDescription)")
} else if response!.mapItems.count == 0 {
print("No matches found")
} else {
print("Matches found")
for item in response!.mapItems {
print("Name = \(String(describing: item.name))")
print("Phone = \(String(describing: item.phoneNumber))")
let resturantName = SKLabelNode()
resturantName.position = CGPoint(x: self.size.width / 2, y: self.size.height / 3.5)
resturantName.fontSize = 30
resturantName.fontName = "PingFangHK-Semibold"
resturantName.text = item.name
resturantName.fontColor = UIColor.white
resturantName.zPosition = 50
self.addChild(resturantName)
}
}
})
Я пробовал это, но он все еще показывает все строки.
Ну, в коде, который вы показали, нет textLabel
, поэтому трудно помочь. Ваш код циклически перебирает все элементы карты. Я не знаю, что еще вы "пробовали".
имя ресторана — это label
resturantName.text = item.name
Но в коде, который вы показали, вы перебираете их все (for item in response!.mapItems
).
Да, я пытаюсь получить доступ ко всем местам в моем районе. Я просто хочу иметь возможность выбрать один и показать его на label
.
Сосредоточься, мужик, сосредоточься. Вы говорите, что хотите выбрать один из множества возвращенных ресторанов. Мэтт рассказал вам, как это сделать. Обновите свой вопрос, чтобы показать код, который вы пробовали, который «по-прежнему показывает все строки».
Этот фрагмент кода должен работать:
search.start(completionHandler: {(response, error) in
if error != nil {
print("Error occured in search: \(error!.localizedDescription)")
} else if response!.mapItems.count == 0 {
print("No matches found")
} else {
print("Matches found")
guard validResponse = response else {return}
//Instead of looping through all of the items, pick one.
let item = validResponse.mapItems.randomElement()
print("Name = \(String(describing: item.name))")
print("Phone = \(String(describing: item.phoneNumber))")
}
}
Вы имеете в виду
response!.mapItems.randomElement()
?