【发布时间】:2020-09-26 17:50:24
【问题描述】:
我有一个在 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
}
为什么会这样。
【问题讨论】:
-
什么意思?农场是required attribute,不是吗?为什么是
makeDownloadURL? -
我没有使用,因为其他路径本身没有查询。所以我想我可以直接使用它。
-
没有区别。
-
我没有对所有图像使用farm0。农场编号由 api 返回。让我仔细检查一下。
-
是的。 Farm 从 Flickr 返回零。我想这是一个问题......