菜鸟教程小白 发表于 2022-12-11 19:16:49

ios - 在 Swift 4.0 中获取上个月趋势存储库时出错 - Github API


                                            <p><p>我正在将以下 curl 转换为 <code>Swift</code> 但不幸的是,在 PlayGround 上运行时出现以下错误:</p>

<p><code>
可选([“错误”:<__NSSingleObjectArrayI 0x60c00000da70>({
    代码=无效;
    场 = q;
    message = "\"`date\"不是可识别的日期/时间格式。请提供 ISO 8601 日期/时间值,例如 YYYY-MM-DD。";
    资源=搜索;
}), "documentation_url": https://developer.github.com/v3/search/,
   “消息”:验证失败])
</code></p>

<p>这是下面的cUrl,。它在终端执行时确实有效。</p>

<p><code>
curl -G https://api.github.com/search/repositories --data-urlencode "q=created:>`date -v-1m '+%Y-%m-%d'`"--data- urlencode "sort=stars"--data-urlencode "order=desc"-H "Accept: application/json"
</code></p>

<p>这是我的要求:</p>

<pre><code>    let sessionConfig = URLSessionConfiguration.default

    let session = URLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)

    guard var urlComponent = URLComponents(string: &#34;https://api.github.com/search/repositories&#34;) else { return }
    let items = [
      URLQueryItem(name: &#34;q&#34;, value: &#34;created:&gt;`date -v-1m &#39;+%Y-%m-%d&#39;`&#34;),
      URLQueryItem(name: &#34;sort&#34;, value: &#34;stars&#34;),
      URLQueryItem(name: &#34;order&#34;, value: &#34;desc&#34;)
    ]

    urlComponent.queryItems = items
    guard let url = urlComponent.url else { return }

    var request = URLRequest(url: url)
    request.httpMethod = &#34;GET&#34;


    // Headers
    request.addValue(&#34;application/json&#34;, forHTTPHeaderField: &#34;Accept&#34;)
    request.addValue(&#34;application/x-www-form-urlencoded&#34;, forHTTPHeaderField: &#34;Content-Type&#34;)

    // Form URL-Encoded Body


    /* Start a new Task */
    let task = session.dataTask(with: request, completionHandler: { (data: Data?, response: URLResponse?, error: Error?) -&gt; Void in
      if (error == nil) {
            // Success
            let statusCode = (response as! HTTPURLResponse).statusCode
            do {
                let json = try JSONSerialization.jsonObject(with: data!, options: []) as?
                print(json)
            } catch {
                print(error)
            }
      }
      else {
            // Failure
            print(&#34;URL Session Task Failed: %@&#34;, error!.localizedDescription);
      }
    })
    task.resume()
    session.finishTasksAndInvalidate()
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>cURL</code> 在终端上运行一个脚本,因此,它将日期 -1m 作为 <code>q</code> 参数传递。例如,如果这个答案的日期是 <code>2017-11-13</code>,那么 <code>date -v-1m '+%Y-%m-%d'</code> 将是 <code> >2017-10-13</code></p>

<pre><code>let items = [
    URLQueryItem(name: &#34;q&#34;, value: &#34;created:&gt;2017-10-13&#34;),
    URLQueryItem(name: &#34;sort&#34;, value: &#34;stars&#34;),
    URLQueryItem(name: &#34;order&#34;, value: &#34;desc&#34;)
]
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 Swift 4.0 中获取上个月趋势存储库时出错 - Github API,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/47254710/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/47254710/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 Swift 4.0 中获取上个月趋势存储库时出错 - Github API