我正在尝试使用Swift 4可解码的JSON方法从API下载大约1100ea 32x32 .png图标,然后尝试将其放入UIImage数组中。
然而,在208之后我收到错误"太多打开文件"。
那么如何下载其余的图标并摆脱这个错误呢?
以下是错误显示的方式:
2017-10-20 14:06:34.073515 + 0300 myProject [2205:286014] [] libsystem_network.dylib:nw_route_get_ifindex :: socket(PF_ROUTE,SOCK_RAW,PF_ROUTE)失败:[24]打开文件太多
这是代码:
func getImageFromWeb(_ urlString: String, closure: @escaping (UIImage?) -> ()) {
guard let url = URL(string: urlString) else {
return closure(nil)
}
let task = URLSession(configuration: .default).dataTask(with: url) { (data, response, error) in
guard error == nil else {
print("error: \(String(describing: error))")
return closure(nil)
}
guard response != nil else {
print("no response")
return closure(nil)
}
guard data != nil else {
print("no data")
return closure(nil)
}
DispatchQueue.main.async {
closure(UIImage(data: data!))
}
}; task.resume()
}
func downloadItemImages(){
// Loop through items to get their relative logos
for i in stride(from: 0, to: items.count, by: 1) {
// Getting item logos (.png) and adding into image array
let imageUrl = "https://files.test/img/items/32x32/\(items[i].id!).png"
getImageFromWeb(imageUrl) { (image) in
if let image = image {
imgItems.append(image)
}
}
}
print("Total image putted into image array: \(imgItems.count)")
}