在 Foursquare“Das-Quadrat”iOS API 包装器中使用 categoryId 作为搜索过滤器
Posted
技术标签:
【中文标题】在 Foursquare“Das-Quadrat”iOS API 包装器中使用 categoryId 作为搜索过滤器【英文标题】:Using categoryId as a search filter in Foursquare "Das-Quadrat" iOS API wrapper 【发布时间】:2015-07-29 18:05:28 【问题描述】:我正在为 ios 编写一个应用程序,在其中我正在搜索具有特定 categoryId 的场所,而不是搜索查询。我的应用程序不需要用户登录,因此我使用名为 das-quadrat 的第三方 API Wrapper 来跳过与用户进行 OAuth 的麻烦。 我正在关注页面底部的搜索请求示例。
此外,这是他们在演示项目 (ExploreViewController.swift) 中实现功能的方式:
func exploreVenues()
let location = self.locationManager.location
var parameters = location.parameters()
let task = self.session.venues.explore(parameters)
(result) -> Void in
if self.venueItems != nil
return
if !NSThread.isMainThread()
fatalError("!!!")
if result.response != nil
if let groups = result.response!["groups"] as? [[String: AnyObject]]
var venues = [[String: AnyObject]]()
for group in groups
if let items = group["items"] as? [[String: AnyObject]]
venues += items
self.venueItems = venues
self.tableView.reloadData()
else if result.error != nil && !result.isCancelled()
self.showErrorAlert(result.error!)
task.start()
在我自己的代码中,我有一个包含一些相关 categoryId 的数组,我想为它们中的每一个执行搜索任务。在这里,我尝试搜索 categoryIds,然后将场地名称和与用户的距离存储在字典中(使用 SwiftyJSON - 我会链接,但我还没有足够的声誉)以从 JSON 中获取元素:
var venues: [JSONParameters]!
var distance: [JSONParameters]!
var session : Session!
let tagData = TagData()
/*
TagData contains a dictionary with relevant categoryIDs and the number
of times the user has visited that venue.
*/
var categoryTagSearch: [String] = TagData.returnRelevantCategories()
var venueNamesDictionary: [String: Int] = [:] //name : distance from user
func findVenues(callback: [String: Int] -> Void)
for tag in categoryTagSearch
let searchTask = session.venues.search(tag)
(result) -> Void in
if let response = result.response //trying to create keys of names with values of distances
let count: Int? = response["venues"].array?.count
let venueName: [String] = response["venues"]["name"].arrayValue
let distanceValue: [Int] = response["venues"]["location"]["distance"].arrayValue
for (i = 0; i < count; i++)
venueNamesDictionary[venueName[i]] = distanceValue[i]
// end searchtask assignment
callback(searchTask.start()) //to force this to wait for responses to finish filling Dictionary
// end for
// end Function
问题是搜索 categoryId 很少返回搜索结果;这类似于将“4bf58dd8d48988d1c8941735”放在 Foursquare 的搜索栏中,这将不会返回正确类别的场所或任何内容。 如何确保我的搜索只返回正确类别的场所?有没有我忽略的功能?
【问题讨论】:
【参考方案1】:您真的指定类别吗?要指定类别,请执行以下操作。
var parameters = [Parameter.categoryId:"4bf58dd8d48988d1c8941735"]
currentTask = session.venues.search(parameters)
【讨论】:
以上是关于在 Foursquare“Das-Quadrat”iOS API 包装器中使用 categoryId 作为搜索过滤器的主要内容,如果未能解决你的问题,请参考以下文章
Foursquare 场地搜索 API:如何找到最近的场地?
Instagram 找不到在 Facebook 或 Foursquare 上创建的位置