【问题标题】:REST API Call in Swift Using Parse Query使用 Parse Query 在 Swift 中调用 REST API
【发布时间】:2015-02-09 07:30:40
【问题描述】:

我正在尝试对使用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。任何帮助将不胜感激。

【问题讨论】:

    标签: ios rest swift parse-platform uisearchdisplaycontroller


    【解决方案1】:

    我在其他地方获得了帮助,但想发布我为遇到相同问题的任何人提供的答案。下面是 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 9 中,stringByAddingPercentEscapesUsingEncoding 已弃用。这可以代替:stringByAddingPercentEncodingWithAllowedCharacters(.URLQueryAllowedCharacterSet())
    猜你喜欢
    • 2019-03-17
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多