有没有办法使用Foursquare API按价格搜索场地?

时间:2018-02-01 17:54:14

标签: ios swift foursquare swifty-json

我正在使用Foursquare API this API和SwiftyJSON在Swift中创建一个iOS项目。有没有办法让Venue结果符合某个价格等级?

我理解如何接收包括价格等级在内的场地结果,但是,除了检查价格等级并过滤掉相关价格等级之外,我不确定如何接收仅匹配特定价格等级的场地。

编辑: 我目前的代码如下:

 func setUpFoursquare(){
    let client = FoursquareAPIClient(clientId: "JMBLK0SDZ0N2NF5TG3UCLMOF4FA5FKA14AIOZ4P4TS4MHEWO", clientSecret: "*****")

    let parameter: [String: String] = [
        "near": "Toronto",//destination!,
        "limit": "4",
        "query": "sushi",
        "price": "1",
        ];
    print("Parameter: \(parameter)");
    print("client: \(client)");
    //The path is based on the request link. For example, the request link for photos is:
    //GET https://api.foursquare.com/v2/venues/VENUE_ID/photos
    //So the path would correspond tovenues/VENUE_ID/photos where VENUE_ID is the corresponding ID.
    client.request(path: "venues/search", parameter: parameter) { result in
        //        client.request(path: "venues/categories", parameter: parameter) { result in

        switch result {
        case let .success(data):
            print("Success")
            guard let json = try? JSON(data: data) else{
                print("\(#function): Unable to retrieve json object")
                return
            }
            print("Json: \(json)")
            if json["meta"]["code"] == 200{
                self.parse(jsonObject: json)
            }
        case let .failure(error):
            // Error handling
            switch error {
            case let .connectionError(connectionError):
                print(connectionError)
            case let .responseParseError(responseParseError):
                print(responseParseError)   // e.g. JSON text did not start with array or object and option to allow fragments not set.
            case let .apiError(apiError):
                print(apiError.errorType)   // e.g. endpoint_error
                print(apiError.errorDetail) // e.g. The requested path does not exist.
            }
        }//end switch
    }//end client.request


}

然而,“价格”:“1”参数实际上并没有改变结果。

1 个答案:

答案 0 :(得分:0)

使用venues/explore端点,您可以按价格级别过滤结果。请参阅此处的文档:https://developer.foursquare.com/docs/api/venues/explore

具体来说,您需要使用price参数:

  

以逗号分隔的价格点列表。目前的有效范围   价格点是[1,2,3,4],1是最便宜的,4是   最贵的。对于食品场所,在美国,1是< 10美元一个   主菜,2是主菜10至20美元,主菜3美元20至30美元,4是主菜。 30美元一个   主菜。

使用您链接的API包装器,看起来像这样......

let parameter: [String: String] = [
    "ll": "35.702069,139.7753269",
    "limit": "10",
    "price": "1,2"
];

client.request(path: "venues/explore", parameter: parameter) { result in
    // do your SwiftyJSON stuff
}