ios - 使用解析查询在 Swift 中调用 REST API

标签 ios rest swift parse-platform uisearchdisplaycontroller

我正在尝试对我使用 built-in REST API 创建的 Parse 数据库发出 GET 请求.当用户在 UISearchBar 中输入文本时将调用 API,最终目标是在 UITableView 中显示返回的数据。下面的代码仅捕获了我发出有效 HTTP 请求的尝试,我试图查看“Query1”是否与搜索字符串匹配(“Query1”是我的 Parse 数据库中的一个参数,它本质上用作关联的搜索词)。

//Mark - UISearchBarDelegate

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
    makeRequest(searchBar.text)
}

func makeRequest (searchString : String) {

    //REST API call to the sampleObjectData class
    var request = NSMutableURLRequest(URL: NSURL(string: "https://api.parse.com/1/classes/sampleObjectData")!)
    let session = NSURLSession.sharedSession()
    request.HTTPMethod = "GET"

    //THIS IS MY TROUBLE AREA
    var params = urllib.urlencode({"where";:json.dumps({
        "Query1": "\(searchString)"
        })})

    var error: NSError?

    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &error)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    //The kAppId & kRestAPIKey calls are referencing contstants at the top of the file
    request.addValue("X-Parse-Application-Id", forHTTPHeaderField: kAppId)
    request.addValue("X-Parse-REST-API-Key", forHTTPHeaderField: kRestAPIKey)


    var task = session.dataTaskWithRequest(request, completionHandler: { (data, response, err) -> Void in
        var stringData = NSString(data: data, encoding: NSUTF8StringEncoding)
        println(stringData)
    })
    task.resume()
}

结果是代码无法构建,因为我不知道如何使用 Swift 将参数应用于 Parse REST API。任何帮助将不胜感激。

最佳答案

我在其他地方得到了帮助,但想发布我得到的答案,以供遇到相同问题的任何人使用。下面是 Swift 中的一个示例 Parse REST API 调用,它使用了我在上面列出的相同参数。

func makeParseRequest(searchString: String) {

        var request = NSMutableURLRequest()
        request.HTTPMethod = "GET"
        request.addValue(kAppId, forHTTPHeaderField: "X-Parse-Application-Id")
        request.addValue(kRestAPIKey, forHTTPHeaderField: "X-Parse-REST-API-Key")
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue("application/json", forHTTPHeaderField: "Accept")

        var params = ["Query1" : "\(searchString)"]
        var error: NSError?
        var paramsJSON = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &error)
        var paramsJSONString = NSString(data: paramsJSON!, encoding: NSUTF8StringEncoding)
        var whereClause = paramsJSONString?.stringByAddingPercentEscapesUsingEncoding(NSASCIIStringEncoding)

        let urlString = "https://api.parse.com/1/classes/sampleObjectData"
        var requestURL = NSURL(string: String(format: "%@?%@%@", urlString, "where=", whereClause!))

        request.URL = requestURL!

        var task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data, response, err) -> Void in
            var stringData = NSString(data: data, encoding: NSUTF8StringEncoding)
            println(stringData)
        })

        task.resume()
    }

关于ios - 使用解析查询在 Swift 中调用 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404802/

相关文章:

swift - 在 Swift 中将视频上传到 YouTube

json - 如何使用 goreq 将 json 转换为结构?

swift - NSMapTable "Generic parameter ' 无法推断出 KeyType”

ios - Swift iOS 应用程序如何通过 UITabBarController 显示 UIView

ios - iPhone 6 上的 CSS - 为什么 DIV 不对齐?

ios - 针对特定用户 - 推送通知 - Backendless

swift - 在 do{}catch{} 之外使用变量/常量 - swift2

ios - Firebase Pod 代码更改

android - android 是否加密通过 HttpConnection Post 或类似 Retrofit 的库发送的 https header ?

ios - 如何快速调整大图像的大小并使其适合 UIButton?