Flickr API返回的服务器场值无效

问题描述

我有这个应用,可以在flickr上搜索标签并返回结果。

结果显示在无限集合视图上。

结果一次返回100。

我开始滚动并到达滚动视图的底部。 Flickr还要求另外100个元素,并且一切正常。

如果我继续向下滚动一段时间,进入第5页(元素400-499)后,我开始出现此错误

NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <D87E6C4C-B8CB-46D1-B891-3E7CDF35ABDF>.<1>"
),NSLocalizedDescription=A server with the specified hostname Could not be found.,NSErrorFailingURLStringKey=https://farm0.static.flickr.com/0/50255650726_a4c7ba2298.jpg,NSErrorFailingURLKey=https://farm0.static.flickr.com/0/50255650726_a4c7ba2298.jpg,_kcfStreamErrorDomainKey=12}

查看网址。

https://farm0.static.flickr.com/0/50255650726_a4c7ba2298.jpg

如果将farm0更改为farm1,则会加载图像。

我正在创建图像下载网址,如下所示:

func makeDownloadURL() -> URL{
  let path = "https://farm\(farm).static.flickr.com/\(server)/\(id)_\(secret).jpg"
  return URL(string: path)!
}

奇怪的是,如果我继续滚动浏览丢失的图像,在某个时候,有效的图像将开始填充集合视图。然后,再次出现问题,再次显示有效图像,如此。

我正在使用它来构建搜索URL

  func makeSearchURLComponents(searchString:String) -> URLComponents? {
    var components = URLComponents()
    components.scheme = "https"
    components.host = "api.flickr.com"
    components.path = "/services/rest"

    let queryMethod       = URLQueryItem(name: "method",value: "flickr.photos.search")
    let queryAPI          = URLQueryItem(name: "api_key",value: flickrAPI)
    let queryFormat       = URLQueryItem(name: "format",value: retrieveFormat)
    let querySafeSearch   = URLQueryItem(name: "safe_search",value: SafeSearch.Safe.rawValue)
    let querySearchString = URLQueryItem(name: "tags",value: searchString)
    let queryPageNumber   = URLQueryItem(name: "page",value: String(pageNumber))
    let querycallBack     = URLQueryItem(name: "nojsoncallback",value: "1")
    components.queryItems = [queryMethod,queryAPI,queryFormat,querySafeSearch,querySearchString,queryPageNumber,querycallBack]

    return components
  }

那是为什么。

解决方法

这似乎是个小问题。

解决方案是在场为零时将场校正为1。

let correctedFarm = farm == 0 ? 1 : farm

规避他们的错误是一种黑客手段。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...